{"version":3,"sources":["../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/react/index.js","../../../../src/context/context.js","../../../src/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/gl-matrix/esm/common.js","../../../../src/utils/utils.js","../../../../src/utils/device-pixels.js","../../../../src/utils/webgl-checks.js","../../../../src/utils/index.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../../src/utils/log.js","../../../../src/lib/constants.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/inherits/inherits_browser.js","../../../../src/utils/assert.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/safe-buffer/index.js","../../../../src/lib/common.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../src/math-utils.js","../../../src/assert.js","../../../src/web-mercator-utils.js","../../../src/viewport.js","../../../src/fit-bounds.js","../../../src/web-mercator-viewport.js","../../../src/normalize-viewport-props.js","../../../src/fly-to-viewport.js","../node_modules/probe.gl/env.js","../../../../src/lib/validators.js","../../../../src/debug/index.js","../../../../src/lifecycle/constants.js","../../../../src/classes/buffer.js","../node_modules/bn.js/lib/bn.js","../node_modules/process/browser.js","../node_modules/buffer/index.js","../../../../src/classes/resource.js","../node_modules/webpack/buildin/global.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/gl-matrix/esm/vec3.js","../../../../src/classes/texture.js","../../../../src/lib/utils/assert.js","../node_modules/minimalistic-assert/index.js","../node_modules/elliptic/lib/elliptic/utils.js","../../../../src/env/globals.js","../../../../src/classes/accessor.js","../../../../src/utils/math-utils.js","../../../../src/state-tracker/webgl-parameter-tables.js","../node_modules/hash.js/lib/hash/utils.js","../../../../src/state-tracker/track-context-state.js","../../../../src/classes/framebuffer.js","../../../../src/transitions/transition.js","../node_modules/gl-matrix/esm/vec4.js","../../../../src/webgl-utils/attribute-utils.js","../../../../src/lib/loader-utils/normalize-loader.js","../../../../src/classes/texture-formats.js","../../../../src/lib/binary-image-api/binary-image-parsers.js","../../../../src/webgl-utils/typed-array-utils.js","../../../../src/webgl-utils/webgl-checks.js","../node_modules/cipher-base/index.js","../../../../src/state-tracker/unified-parameter-api.js","../../../../src/utils/flatten.js","../../../../src/webgl-utils/constants-to-keys.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/react-dom/index.js","../../../../src/lib/assert.js","../node_modules/prop-types/index.js","../../../../src/modules/fp32/fp32.js","../../../../src/shaderlib/project/project.glsl.js","../../../../src/shaderlib/project/project.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../src/utils/iterable-utils.js","../../../../src/utils/typed-array-manager.js","../../../../src/classes/renderbuffer-formats.js","../../../../src/classes/renderbuffer.js","../../../../src/utils/globals.js","../node_modules/randombytes/browser.js","../node_modules/sha.js/hash.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../../../../src/utils/load-file.js","../../../../src/classes/texture-2d.js","../../../../src/lib/utils/globals.js","../../../../src/lib/gl-matrix-extras.js","../../../../src/polyfill/get-parameter-polyfill.js","../../../../src/polyfill/polyfill-table.js","../node_modules/create-hash/browser.js","../node_modules/core-util-is/lib/util.js","../node_modules/buffer-xor/index.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../src/utils/hi-res-timestamp.js","../../../../src/utils/memoize.js","../../../../src/lib/parsed-image-api/image-type.js","../../../../src/lib/binary-image-api/binary-image-api.js","../../../../src/lib/parsers/parse-to-node-image.js","../../../../src/lib/parsers/parse-to-image.js","../../../../src/lib/parsers/parse-to-image-bitmap.js","../../../../src/lib/parsers/parse-svg.js","../../../../src/lib/parsers/parse-image.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../src/init.js","../../../../src/lib/env-utils/assert.js","../node_modules/hammerjs/hammer.js","../node_modules/process-nextick-args/index.js","../node_modules/browserify-aes/aes.js","../node_modules/evp_bytestokey/index.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/parse-asn1/index.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../src/env/is-browser.js","../../../../src/env/is-electron.js","../../../../src/shaderlib/project/viewport-uniforms.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../../../../src/transitions/transition-interpolator.js","../../../../src/lib/attribute/shader-attribute.js","../../../../src/lib/attribute/data-column.js","../../../../src/lib/attribute/gl-utils.js","../../../../src/utils/range.js","../../../../src/utils/array-utils.js","../../../../src/lib/attribute/attribute-transition-utils.js","../../../../src/lib/attribute/attribute.js","../../../../src/utils/shader-utils.js","../../../../src/transform/buffer-transform.js","../../../../src/glsl-utils/get-shader-version.js","../../../../src/modules/transform/transform.js","../../../../src/transform/transform-shader-utils.js","../../../../src/transform/texture-transform.js","../../../../src/transform/transform.js","../../../../src/transitions/gpu-interpolation-transition.js","../../../../src/lib/attribute/attribute-transition-manager.js","../../../../src/transitions/gpu-spring-transition.js","../../../../src/lib/attribute/attribute-manager.js","../../../../src/transitions/cpu-interpolation-transition.js","../../../../src/transitions/cpu-spring-transition.js","../../../../src/lib/uniform-transition-manager.js","../../../../src/lifecycle/props.js","../../../../src/utils/count.js","../../../../src/utils/shader.js","../../../../src/shaderlib/project/project-functions.js","../../../../src/lifecycle/prop-types.js","../../../../src/lifecycle/create-props.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../../../../src/lifecycle/component-state.js","../../../../src/lifecycle/component.js","../../../../src/lib/layer-state.js","../../../../src/javascript-utils/is-type.js","../../../../src/lib/fetch/fetch-file.browser.js","../../../../src/lib/fetch/fetch-file.js","../../../../src/lib/validate-loader-version.js","../../../../src/lib/loader-utils/loggers.js","../../../../src/lib/loader-utils/merge-options.js","../node_modules/@babel/runtime/helpers/esm/AwaitValue.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../../../../src/lib/loader-utils/check-errors.js","../../../../src/lib/loader-utils/get-data.js","../../../../src/lib/loader-utils/get-loader-context.js","../../../../src/javascript-utils/binary-utils.js","../../../../src/worker-utils/get-worker-url.js","../../../../src/worker-utils/get-transfer-list.js","../../../../src/worker-utils/worker-thread.js","../../../../src/worker-utils/worker-pool.js","../../../../src/worker-utils/worker-farm.js","../../../../src/lib/loader-utils/parse-with-worker.js","../../../../src/lib/select-loader.js","../../../../src/lib/parse.js","../../../../src/lib/load.js","../../../../src/lib/layer.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../../../../src/classes/base/math-array.js","../node_modules/md5.js/index.js","../node_modules/stream-browserify/index.js","../node_modules/events/events.js","../node_modules/readable-stream/readable-browser.js","../node_modules/readable-stream/node_modules/safe-buffer/index.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/ripemd160/index.js","../node_modules/sha.js/index.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/modes/index.js","../node_modules/brorand/index.js","../node_modules/browserify-rsa/index.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/hash.js/lib/hash.js","../node_modules/react-input-autosize/lib/AutosizeInput.js","../../../../src/classes/clear.js","../../../../src/features/webgl-features-table.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/AwaitValue.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js","../node_modules/flatbuffers/js/flatbuffers.mjs","../node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","../util/utf8.ts","../io/interfaces.ts","../util/compat.ts","../util/buffer.ts","../io/adapters.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../vector.ts","../fb/Schema.ts","../fb/Message.ts","../enum.ts","../util/bit.ts","../visitor.ts","../visitor/typecomparator.ts","../type.ts","../data.ts","../util/pretty.ts","../builder/valid.ts","../builder/buffer.ts","../builder.ts","../builder/bool.ts","../builder/null.ts","../builder/date.ts","../builder/decimal.ts","../builder/dictionary.ts","../builder/fixedsizebinary.ts","../util/math.ts","../builder/float.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../util/bn.ts","../builder/int.ts","../builder/time.ts","../builder/timestamp.ts","../builder/interval.ts","../builder/binary.ts","../builder/utf8.ts","../builder/run.ts","../vector/row.ts","../util/vector.ts","../vector/chunked.ts","../column.ts","../util/args.ts","../schema.ts","../builder/list.ts","../builder/fixedsizelist.ts","../builder/map.ts","../builder/struct.ts","../builder/union.ts","../visitor/set.ts","../fb/File.ts","../visitor/builderctor.ts","../builder/index.ts","../ipc/metadata/file.ts","../io/stream.ts","../io/file.ts","../util/int.ts","../visitor/vectorloader.ts","../visitor/typeassembler.ts","../ipc/metadata/json.ts","../ipc/metadata/message.ts","../ipc/message.ts","../visitor/vectorassembler.ts","../ipc/writer.ts","../util/recordbatch.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../vector/base.ts","../vector/binary.ts","../vector/bool.ts","../vector/date.ts","../vector/decimal.ts","../vector/dictionary.ts","../vector/fixedsizebinary.ts","../vector/fixedsizelist.ts","../vector/float.ts","../vector/interval.ts","../vector/int.ts","../vector/list.ts","../vector/map.ts","../vector/null.ts","../vector/struct.ts","../vector/timestamp.ts","../vector/time.ts","../vector/union.ts","../vector/utf8.ts","../util/fn.ts","../visitor/get.ts","../visitor/indexof.ts","../visitor/iterator.ts","../visitor/toarray.ts","../visitor/bytewidth.ts","../visitor/vectorctor.ts","../vector/index.ts","../table.ts","../recordbatch.ts","../ipc/reader.ts","../io/whatwg/builder.ts","../compute/predicate.ts","../compute/dataframe.ts","../Arrow.ts","../Arrow.dom.ts","../io/whatwg/iterable.ts","../io/whatwg/reader.ts","../io/whatwg/writer.ts","../../../../src/lib/inject-shader.js","../../../../src/modules/module-injectors.js","../../../../src/webgl-utils/format-utils.js","../../../../src/classes/copy-and-blit.js","../../../../src/utils/check-props.js","../node_modules/object-assign/index.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/webpack/buildin/module.js","../node_modules/isarray/index.js","../node_modules/path-browserify/index.js","../node_modules/hash-base/index.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha512.js","../node_modules/create-hmac/browser.js","../node_modules/create-hash/md5.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/des.js/lib/des/utils.js","../node_modules/des.js/lib/des/des.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/xor.js","../node_modules/public-encrypt/withPublic.js","../../../../src/polyfill/polyfill-context.js","../../../../src/shaderlib/project32/project32.js","../../../../src/modules/picking/picking.js","../../../../src/shaderlib/picking/picking.js","../../../../src/classes/base/vector.js","../../../../src/classes/vector3.js","../../../../src/classes/base/matrix.js","../../../../src/classes/matrix4.js","../node_modules/@mapbox/tiny-sdf/index.js","../../../../src/lib/register-loaders.js","../node_modules/@emotion/core/node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@emotion/sheet/dist/sheet.browser.esm.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/cache/dist/cache.browser.esm.js","../node_modules/@emotion/utils/dist/utils.browser.esm.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/serialize/dist/serialize.browser.esm.js","../node_modules/@emotion/css/dist/css.browser.esm.js","../node_modules/@emotion/core/dist/core.browser.esm.js","../node_modules/react-select/dist/chunk-39d3fda8.browser.esm.js","../node_modules/react-select/dist/chunk-80640036.browser.esm.js","../node_modules/react-select/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/react-select/dist/base/dist/react-select-cac0a5ae.browser.esm.js","../node_modules/react-select/dist/chunk-b36baf1a.browser.esm.js","../node_modules/react-select/dist/react-select.browser.esm.js","../../../../src/utils/array-utils-flat.js","../../../../src/env/get-browser.js","../../../../src/classes/vertex-array-object.js","../../../../src/classes/vertex-array.js","../../../../src/utils/format-value.js","../../../../src/debug/debug-vertex-array.js","../../../../src/debug/debug-uniforms.js","../../../../src/debug/debug-program-configuration.js","../../../../src/lib/model-utils.js","../../../../src/lib/model.js","../../../../src/lib/transpile-shader.js","../../../../src/lib/filters/prop-types.js","../../../../src/lib/shader-module.js","../../../../src/lib/resolve-modules.js","../../../../src/utils/is-old-ie.js","../../../../src/utils/webgl-info.js","../../../../src/lib/assemble-shaders.js","../../../../src/lib/platform-defines.js","../../../../src/lib/program-manager.js","../../../../src/classes/texture-cube.js","../../../../src/classes/texture-3d.js","../../../../src/webgl-utils/texture-utils.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/sql.js/dist/sql-wasm.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/crypto-browserify/index.js","../node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/timers-browserify/main.js","../node_modules/setimmediate/setImmediate.js","../node_modules/util-deprecate/browser.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/writable-browser.js","../node_modules/readable-stream/duplex-browser.js","../node_modules/readable-stream/transform.js","../node_modules/readable-stream/passthrough.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha384.js","../node_modules/create-hmac/legacy.js","../node_modules/browserify-sign/algos.js","../node_modules/pbkdf2/lib/async.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/ede.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-des/modes.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/parse-asn1/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/vm-browserify/index.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/create-ecdh/browser.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/randomfill/browser.js","../../../../src/env/index.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../src/utils/stub-methods.js","../../../../src/features/features.js","../../../../src/utils/local-storage.js","../../../../src/utils/formatters.js","../../../../src/utils/color.js","../../../../src/utils/autobind.js","../../../../src/lib/log.js","../../../../src/lib/stat.js","../../../../src/lib/stats.js","../../../../src/lib/path-utils/file-aliases.js","../../../../src/classes/transform-feedback.js","../../../../src/geometry/geometry.js","../../../../src/lib/env-utils/globals.js","../../../../src/transitions/viewport-fly-to-interpolator.js","../../../../src/animation/timeline.js","../../../../src/viewports/viewport.js","../../../../src/shaderlib/misc/geometry.js","../../../../src/shaderlib/index.js","../../../../src/lib/layer-manager.js","../../../../src/utils/deep-equal.js","../../../../src/lib/view-manager.js","../../../../src/utils/positions.js","../../../../src/views/view.js","../../../../src/viewports/web-mercator-viewport.js","../../../../src/transitions/linear-interpolator.js","../../../../src/controllers/transition-manager.js","../../../../src/controllers/controller.js","../../../../src/controllers/view-state.js","../../../../src/controllers/map-controller.js","../../../../src/views/map-view.js","../../../../src/effects/lighting/ambient-light.js","../../../../src/effects/lighting/directional-light.js","../../../../src/lib/effect.js","../../../../src/passes/pass.js","../../../../src/passes/layers-pass.js","../../../../src/passes/shadow-pass.js","../../../../src/shaderlib/shadow/shadow.js","../../../../src/effects/lighting/lighting-effect.js","../../../../src/lib/effect-manager.js","../../../../src/passes/draw-layers-pass.js","../../../../src/passes/pick-layers-pass.js","../../../../src/lib/deck-renderer.js","../../../../src/lib/picking/query-object.js","../../../../src/lib/picking/pick-info.js","../../../../src/lib/deck-picker.js","../../../../src/lib/tooltip.js","../../../src/image-loader.js","../../../../src/utils/json-loader.js","../../../../src/lib/init.js","../../../../src/classes/query.js","../../../../src/webgl-utils/request-animation-frame.js","../../../../src/lib/animation-loop.js","../../../../src/utils/hammer-overrides.js","../../../../src/utils/hammer.browser.js","../../../src/constants.js","../../../../src/inputs/wheel-input.js","../../../../src/inputs/move-input.js","../../../../src/inputs/key-input.js","../../../../src/inputs/contextmenu-input.js","../../../../src/utils/event-utils.js","../../../../src/utils/event-registrar.js","../../../src/event-manager.js","../../../../src/lib/deck.js","../../../../src/utils/inherits-from.js","../../../../src/utils/extract-jsx-layers.js","../../../../src/utils/evaluate-children.js","../../../../src/utils/position-children-under-views.js","../../../src/deckgl.js","../../../../src/lib/composite-layer.js","../../../../src/lib/parsed-image-api/parsed-image-api.js","../../../../src/lib/texture-loading-api/generate-url.js","../../../../src/lib/texture-loading-api/async-deep-map.js","../../../../src/lib/texture-loading-api/deep-load.js","../../../../src/lib/texture-loading-api/load-image.js","../../../../src/icon-layer/icon-manager.js","../../../../src/icon-layer/icon-layer.js","../../../../src/icon-layer/icon-layer-vertex.glsl.js","../../../../src/icon-layer/icon-layer-fragment.glsl.js","../../../../src/text-layer/multi-icon-layer/multi-icon-layer-vertex.glsl.js","../../../../src/text-layer/multi-icon-layer/multi-icon-layer.js","../../../../src/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js","../../../../src/text-layer/utils.js","../../../../src/text-layer/lru-cache.js","../../../../src/text-layer/font-atlas-manager.js","../../../../src/text-layer/text-layer.js","../../../src/utils.js","../../../../src/classes/uniforms.js","../../../../src/glsl-utils/get-shader-name.js","../../../../src/glsl-utils/format-glsl-error.js","../../../../src/glsl-utils/get-shader-type-name.js","../../../../src/classes/shader.js","../../../../src/classes/program-configuration.js","../../../../src/classes/program.js","../../../../src/scatterplot-layer/scatterplot-layer.js","../../../../src/scatterplot-layer/scatterplot-layer-vertex.glsl.js","../../../../src/scatterplot-layer/scatterplot-layer-fragment.glsl.js","../../../../src/line-layer/line-layer.js","../../../../src/line-layer/line-layer-vertex.glsl.js","../../../../src/line-layer/line-layer-fragment.glsl.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_typeof2","Symbol","iterator","constructor","prototype","_typeof","_possibleConstructorReturn","self","call","assertThisInitialized","_inherits","subClass","superClass","create","module","exports","_defineProperties","target","props","i","length","descriptor","_createClass","protoProps","staticProps","require","isBrowser","getIsBrowser","isPage","document","CONTEXT_DEFAULTS","webgl2","webgl1","throwOnError","manageState","canvas","debug","width","height","createGLContext","options","assert","Error","targetCanvas","getCanvas","onError","gl","createBrowserContext","logInfo","instrumentGLContext","getVersion","trackContextState","copyState","log","args","global","Math","resizeGLContext","devicePixelRatio","getDevicePixelRatio","setDevicePixelRatio","ext","message","onCreateError","error","Number","webGL","isWebGL2","info","vendorMasked","rendererMasked","vendor","renderer","version","shadingLanguageVersion","getContextDebugInfo","driver","WebGL2RenderingContext","clientWidth","clientHeight","cachedSize","clampedPixelRatio","canvasWidth","canvasHeight","_toConsumableArray","arr","Array","isArray","arr2","iter","toString","from","_slicedToArray","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","EPSILON","ARRAY_TYPE","Float32Array","RANDOM","random","PI","hypot","y","arguments","sqrt","x","isArrayX","ArrayBuffer","isArrayY","cssToDeviceRatio","cssToDevicePixels","cssPixel","yInvert","ratio","scalePixels","useDevicePixels","windowRatio","window","pixel","scaleX","scaleY","t","xHigh","yHigh","isWebGL","Boolean","id","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","Promise","then","_asyncToGenerator","fn","this","apply","COORDINATE_SYSTEM","DEFAULT","LNGLAT","METER_OFFSETS","LNGLAT_OFFSETS","CARTESIAN","get","PROJECTION_MODE","WEB_MERCATOR","WEB_MERCATOR_AUTO_OFFSET","IDENTITY","EVENTS","click","handler","panstart","panmove","panend","transpose","out","a","a01","a02","a03","a12","a13","a23","invert","a00","a10","a11","a20","a21","a22","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","determinant","multiply","b","b0","b1","b2","b3","translate","v","z","scale","rotate","rad","axis","s","c","b12","b20","b21","b22","len","glMatrix","sin","cos","rotateX","rotateY","rotateZ","fromQuat","q","w","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspective","fovy","aspect","f","tan","Infinity","ortho","lr","bt","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","abs","identity","equals","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a14","a15","b4","b5","b6","b7","b8","b9","b13","b14","b15","max","ctor","superCtor","super_","TempCtor","buffer","Buffer","copyProps","src","dst","SafeBuffer","encodingOrOffset","alloc","allocUnsafe","allocUnsafeSlow","size","fill","encoding","buf","SlowBuffer","config","round","formatValue","precision","parseFloat","map","func","result","array","clamp","min","lerp","ai","epsilon","oldEpsilon","property","receiver","Reflect","base","object","hasOwnProperty","desc","getOwnPropertyDescriptor","_assertThisInitialized","ReferenceError","transformVector","matrix","vector","vec4","mod","divisor","modulus","start","end","step","condition","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","zoomToScale","zoom","scaleToZoom","lngLatToWorld","lng","lat","phi2","worldToLngLat","lambda2","getMeterZoom","latitude","getDistanceScales","longitude","highPrecision","latCosine","unitsPerDegreeY","altUnitsPerMeter","latCosine2","unitsPerDegreeY2","altUnitsPerDegree2","altUnitsPerMeter2","addMetersToLngLat","lngLatZ","xyz","unitsPerMeter","unitsPerMeter2","worldspace","newLngLat","newZ","getViewMatrix","pitch","bearing","altitude","vm","mat4","vec3","getProjectionParameters","nearZMultiplier","farZMultiplier","pitchRadians","halfFov","topHalfSurfaceDistance","fov","focalDistance","getProjectionMatrix","worldToPixels","pixelProjectionMatrix","pixelsToWorld","pixelUnprojectionMatrix","targetZ","coord","coord0","coord1","vec2","bounds","minExtent","maxZoom","padding","offset","west","south","east","north","viewport","nw","se","targetSize","offsetX","offsetY","centerLngLat","WebMercatorViewport","projectionMatrix","viewMatrix","lngLat","xy","fromLocation","pos","toLocation","getMapCenterByLngLatPosition","fitBounds","vpm","m","mInverse","bind","project","unproject","projectPosition","unprojectPosition","projectFlat","unprojectFlat","topLeft","worldPosition","targetZWorld","X","Y","Z","normalizeViewportProps","flatViewport","topY","bottomY","shiftY","VIEWPORT_TRANSITION_PROPS","DEFAULT_OPTS","curve","speed","flyToViewport","startProps","endProps","opts","getFlyToTransitionParams","startZoom","startCenterXY","uDelta","w0","u1","S","rho","rho2","r0","startValue","endValue","u","scaleIncrement","newZoom","newCenterWorld","newCenter","getFlyToDuration","screenSpeed","maxDuration","duration","startCenter","startScale","endZoom","endCenter","endCenterXY","w1","_u1","r1","checkNumber","checkVector","callerName","validateVector","deprecated","method","console","loggers","register","handlers","eventType","deckLog","LIFECYCLE","NO_STATE","MATCHED","INITIALIZED","AWAITING_GC","AWAITING_FINALIZATION","FINALIZED","PROP_SYMBOLS","COMPONENT","ASYNC_DEFAULTS","ASYNC_ORIGINAL","ASYNC_RESOLVED","DEPRECATED_PROPS","stride","type","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","accessor","byteLength","Accessor","data","checkProps","initialize","srcOffset","assertWebGL2Context","sourceBuffer","readOffset","writeOffset","dstData","srcByteOffset","dstOffset","ArrayType","getTypedArrayFromGLType","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","copyElementCount","index","isIndexedBuffer","changed","getData","usage","getGLTypeFromTypedArray","sourceElementOffset","getElementCount","pname","getBufferParameter","reallocate","Resource","val","msg","inherits","BN","number","endian","isBN","negative","words","red","_init","wordSize","e","parseHex","str","r","charCodeAt","parseBase","mul","num","cmp","_initNumber","_initArray","replace","_parseHex","_parseBase","strip","toArray","ceil","j","off","limbLen","limbPow","total","word","imuln","_iaddn","pow","copy","dest","clone","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","lo","carry","k","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","reqLength","littleEndian","res","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","hi","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","al0","ah0","al1","ah1","al2","ah2","al3","ah3","al4","ah4","al5","ah5","al6","ah6","al7","ah7","al8","ah8","al9","ah9","bl0","bh0","bl1","bh1","bl2","bh2","bl3","bh3","bl4","bh4","bl5","bh5","bl6","bh6","bl7","bh7","bl8","bh8","bl9","bh9","imul","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","itwdf","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","odd","conjugate","normalize13b","ws","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","input","output","outLen","prev","mod3","one","nOne","lpow","inv","wnd","current","currentLen","mont","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","on","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","byteOffset","fromArrayLike","fromArrayBuffer","string","isEncoding","actual","write","slice","fromString","isBuffer","checked","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","isNaN","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","_isBuffer","compare","list","swap16","swap32","swap64","match","join","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toHex","checkOffset","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","trim","stringtrim","base64clean","ERR_RESOURCE_METHOD_UNDEFINED","assertWebGLContext","userData","uid","_handle","deleteChildren","children","_deleteHandle","child","funcOrHandle","handle","getKeyValue","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","webgl1Default","webgl2Default","defaultValue","_getParameter","keys","values","parameterKeys","getKey","getParameter","className","methodNames","stubRemovedMethods","luma","stats","lumaStats","Function","negate","ax","ay","transformMat4","vec","fromValues","normalize","cross","az","bx","by","bz","transformMat3","transformQuat","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","angle","tempA","tempB","cosine","dot","acos","NPOT_MIN_FILTERS","WebGLBuffer","Texture","format","linearFiltering","supported","isFormatSupported","isLinearFilteringSupported","resolvedImageData","pixels","border","recreate","pixelStore","textureUnit","mipmaps","dataFormat","depth","_deduceParameters","compressed","params","withParameters","level","dataType","_getDataType","channels","DATA_FORMAT_CHANNELS","channelSize","TYPE_SIZES","ndarray","textureFormat","TEXTURE_FORMATS","_deduceImageSize","ImageData","HTMLImageElement","naturalHeight","HTMLCanvasElement","ImageBitmap","HTMLVideoElement","videoHeight","getTexParameter","param","_getNPOTParam","isPowerOfTwo","equal","utils","minAssert","minUtils","zero2","encode","getNAF","naf","getJSF","k1","k2","jsf","d1","d2","u2","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","globals","window_","process_","DEFAULT_ACCESSOR_VALUES","PROP_CHECKS","accessors","JSON","createMat4","extractCameraVectors","viewMatrixInverse","direction","cameraPosition","cameraDirection","cameraUp","cameraRight","nearCenter","farCenter","getFrustumPlanes","fovyRadians","position","nearFarScale","widthScale","nearHeight","nearWidth","normal","distance","planes","toDoublePrecisionArray","typedArray","startIndex","endIndex","count","scratchArray","sourceIndex","targetIndex","GL_PARAMETER_DEFAULTS","Int32Array","enable","pixelStorei","GL_PARAMETER_SETTERS","framebuffer","backMask","ref","backFunc","backRef","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","getValue","glEnum","cache","GL_COMPOSITE_PARAMETER_SETTERS","blendEquation","blendFunc","polygonOffset","sampleCoverage","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","disable","bindFramebuffer","blendColor","blendEquationSeparate","blendFuncSeparate","clearColor","clearDepth","clearStencil","colorMask","cullFace","depthFunc","depthRange","zNear","depthMask","frontFace","lineWidth","scissor","stencilMask","stencilMaskSeparate","face","stencilFunc","stencilFuncSeparate","stencilOp","stencilOpSeparate","isEnabled","GL_PARAMETER_GETTERS","isSurrogatePair","htonl","zero8","enc","toHex32","join32","split32","rotr32","rotl32","sum32","sum32_3","sum32_4","d","sum32_5","sum64","ah","al","bh","sum64_hi","bl","sum64_lo","sum64_4_hi","ch","cl","dh","dl","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","installGetterOverride","functionName","originalGetterFunc","installSetterSpy","setter","originalSetterFunc","valueChanged","oldValue","installProgramSpy","originalUseProgram","GLState","getParameters","_updateCache","stateStack","oldValues","setParameters","cached","deepArrayEqual","global_","pushContextState","popContextState","Framebuffer","colorBufferFloat","colorBufferHalfFloat","attachments","color","stencil","check","readBuffer","drawBuffers","_createDefaultAttachments","clearAttachments","resizeAttachments","prevHandle","newAttachments","attachment","renderbuffer","texture","layer","status","_getFrameBufferStatus","clear","clearBuffer","drawBuffer","_getAttachmentParameterFallback","getFramebufferAttachmentParameter","ATTACHMENT_PARAMETERS","getAttachmentParameter","attachmentName","getAttachmentParameters","copyToDataUrl","logLevel","image","maxHeight","defaultAttachments","oldAttachment","mapIndexToCubeMapFace","caps","getFeatures","STATUS","DEFAULT_SETTINGS","onStart","onUpdate","onInterrupt","onEnd","Transition","timeline","settings","delay","getTime","isFinished","VERTEX_SHADER","FRAGMENT_SHADER","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","drawMode","decomposeCompositeGLType","compositeGLType","typeAndSize","components","getCompositeGLType","compType","compComponents","glType","isLoaderObject","loader","hasParser","loaderOptions","normalizeLoader","types","gl2","mimeTypeMap","Map","test","getSize","dataView","tableMarkers","Set","sofMarkers","getJpegMarkers","isPng","isGif","isBmp","isJpeg","arrayOrType","Uint8ClampedArray","flipRows","bytesPerPixel","temp","bytesPerRow","topOffset","bottomOffset","newWidth","newHeight","newData","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","fin","isObjectEmpty","compositeSetters","glConstant","compositeSetter","getter","state","resetParameters","nocatch","flatten","filter","flattenArray","fillArray","source","copied","pna","objectKeys","Duplex","util","Readable","Writable","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","_destroy","cb","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","vs","fs","COORDINATE_SYSTEM_GLSL_CONSTANTS","PROJECTION_MODE_GLSL_CONSTANTS","INITIAL_MODULE_OPTIONS","dependencies","getUniforms","getUniformsFromViewport","EMPTY_ARRAY","placeholderArray","createIterable","startRow","endRow","iterable","objectInfo","isAsyncIterable","getAccessorFromBuffer","startIndices","nested","bytesPerElement","elementStride","elementOffset","vertexCount","TypedArrayManager","overAlloc","Type","newSize","newArray","_allocate","pool","EXT_FLOAT_WEBGL2","bpp","formats","Renderbuffer","samples","RENDERBUFFER_FORMATS","getRenderbufferParameter","userAgent","navigator","passiveSupported","crypto","msCrypto","getRandomValues","generated","Hash","blockSize","finalSize","_block","_finalSize","_blockSize","_len","block","accum","assigned","remainder","digest","rem","lowBits","highBits","hash","_hash","_setPrototypeOf","isNativeReflectConstruct","construct","sham","Proxy","Date","_construct","Parent","Class","pathPrefix","loadImage","url","Texture2D","matches","vec2_transformMat4AsVector","vec3_transformMat4AsVector","vec3_transformMat2","getWebGL2ValueOrZero","WEBGL_PARAMETERS","WEBGL2_CONTEXT_POLYFILLS","meta","suffix","createVertexArray","deleteVertexArray","bindVertexArray","isVertexArray","vertexAttribDivisor","drawElementsInstanced","drawArraysInstanced","createQuery","deleteQuery","beginQuery","endQuery","getQuery","getQueryObject","getQueryParameter","WEBGL2_CONTEXT_OVERRIDES","originalFunc","getVertexAttrib","extension","getExtensionData","location","getProgramParameter","program","getInternalformatParameter","originalGetParameter","uidCounters","isEmpty","MD5","RIPEMD160","sha","Base","alg","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","isPrimitive","BlockHash","pending","pendingTotal","outSize","hmacStrength","padLength","_delta8","_delta32","_pad","_digest","asn1","bignum","define","constants","decoders","encoders","Reporter","DecoderBuffer","EncoderBuffer","Node","__esModule","timestamp","timeParts","isEqual","memoize","compute","cachedArgs","cachedResult","IMAGE_BITMAP_SUPPORTED","HTML_IMAGE_SUPPORTED","Image","NODE_IMAGE_SUPPORTED","isImageTypeSupported","getDefaultImageType","getBinaryImageMIMEType","arrayBuffer","toDataView","mimeType","DataView","parseToNodeImage","blob","Blob","URL","objectUrl","loadToImage","parseToImageBitmap","imagebitmapOptions","createImageBitmap","textDecoder","xmlText","btoa","context","parseSVG","getImageOutputFormat","parseToImage","imageOptions","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","forEach","getOwnPropertyDescriptors","defineProperties","has","VERSION","modules","nodeIO","exportName","assign","VENDOR_PREFIXES","TEST_ELEMENT","createElement","now","setTimeoutContext","bindFn","invokeArrayArg","each","deprecate","deprecationMessage","stack","warn","nextKey","extend","merge","inherit","properties","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","addEventListener","removeEventListeners","removeEventListener","hasParent","node","parent","parentNode","inStr","find","inArray","findByKey","uniqueArray","sort","results","prefixed","prefix","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","element","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","callback","inputTarget","domHandler","ev","init","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","deltaTime","getAngle","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","last","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","clientX","clientY","p1","p2","atan2","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","splice","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","all","touches","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","style","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","preventDefault","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","createInputInstance","toggleCssProps","item","stop","force","stopped","curRecognizer","existing","remove","events","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","arg1","arg2","arg3","asUInt32Array","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","decryptBlock","m1","scrub","password","salt","keyBits","ivLen","keyLen","iv","used","keyStart","ivStart","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","I","repr","nafW","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","aesid","fixProc","ciphers","compat","parseKeys","passphrase","subtype","ndata","stripped","tag","certificate","decode","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","pub_key","DSAparam","decrypt","kde","kdeparams","iters","algo","cipher","cipherText","keylen","pbkdf2Sync","createDecipheriv","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","signature","isElectron","mockUserAgent","realUserAgent","ZERO_VECTOR","VECTOR_TO_POINT_MATRIX","IDENTITY_MATRIX","DEFAULT_PIXELS_PER_UNIT2","DEFAULT_COORDINATE_ORIGIN","LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD","getMemoizedViewportUniforms","coordinateSystem","coordinateOrigin","viewMatrixUncentered","projectionMode","viewProjectionMatrix","projectionCenter","cameraPosCommon","shaderCoordinateOrigin","offsetMode","positionCommonSpace","calculateMatrixAndOffset","distanceScales","viewportSize","uniforms","project_uCoordinateSystem","project_uProjectionMode","project_uCoordinateOrigin","project_uCenter","project_uAntimeridian","project_uViewportSize","project_uDevicePixelRatio","project_uFocalDistance","project_uCommonUnitsPerMeter","project_uCommonUnitsPerWorldUnit","project_uCommonUnitsPerWorldUnit2","project_uScale","project_uViewProjectionMatrix","project_uCameraPosition","distanceScalesAtOrigin","modelMatrix","wrapLongitude","positionOrigin","_objectSpread","TransitionInterpolator","extract","required","currentProps","nextProps","_propsToCompare","startViewStateProps","endViewStateProps","propName","ShaderAttribute","constantValue","getStride","resolveShaderAttribute","baseAccessor","shaderAttributeOptions","vertexOffset","DataColumn","logicalType","doublePrecision","bufferType","hasFeature","FEATURES","defaultType","glArrayFromType","externalBuffer","bufferAccessor","allocatedValue","constant","typedArrayManager","shaderAttributes","isBuffer64Bit","doubleShaderAttributeDefs","resolvedOptions","high","low","resolveDoublePrecisionShaderAttributes","shaderAttributeDef","_normalizeValue","_normalizeConstant","_areValuesEqual","startOffset","endOffset","numInstances","illegalArrayType","value1","value2","isIndexed","EMPTY","FULL","rangeList","range","newRangeList","insertPosition","range0","padArrayChunk","sourceLength","targetLength","datum","DEFAULT_TRANSITION_SETTINGS","interpolation","easing","spring","stiffness","damping","normalizeTransitionSettings","userSettings","layerSettings","getSourceBufferAttribute","attribute","getAttributeTypeFromSize","cycleBuffers","buffers","getAttributeBufferLength","multiplier","padBuffer","fromLength","fromStartIndices","precisionMultiplier","toStartIndices","hasStartIndices","toLength","isConstant","toData","getMissingData","sourceStartIndices","targetStartIndices","getChunkData","nextSourceIndex","nextTargetIndex","padArray","Attribute","transition","noAlloc","lastExternalBuffer","binaryValue","binaryAccessor","needsUpdate","needsRedraw","updateRanges","clearChangedFlags","reason","dataRange","updated","getVertexOffset","setData","needsNormalize","row","shaderAttributeDefs","accessorFunc","objectValue","numVertices","layout","FS100","FS_GLES","FS300","getQualifierDetails","line","qualifiers","qualifier","definition","getPassthroughFS","inputType","outputValue","convertToVec4","typeToChannelCount","variable","BufferTransform","varyings","bindings","sourceBuffers","transformFeedback","attributes","varyingName","feedbackBuffers","bufferOrParams","getBuffer","feedbackName","feedbackMap","sourceName","bufferOrRef","_createNewBuffer","bufferName","_getFeedbackBuffers","model","_updateBinding","_swapBuffers","nextIndex","dstName","resources","currentIndex","getShaderVersion","updateForTextures","sourceTextureMap","targetTextureVarying","targetTexture","sourceCount","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","updateVsLines","textureMap","attributeData","getAttributeDefinition","updatedLine","textureName","samplerName","sizeName","uniformDeclerations","getSamplerDeclerations","typeToChannelSuffix","sampleInstruction","inject","processAttributeDefinition","combineInjects","varying","qualaiferDetails","getVaryingType","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","TextureTransform","updatedModelProps","_processVertexShader","sourceTextures","discard","hasSourceTextures","sizeUniforms","packed","readPixelsToArray","channelCount","packedPixels","packCount","_targetTextureVarying","_swapTexture","textureOrReference","refTexture","_createNewTexture","_sourceTextures","_targetTexture","_createTargetTexture","elementCount","elementIds","_swapTextures","cloneTextureFrom","combinedInject","bufferTransform","textureTransform","clearRenderTarget","updatedOpts","_updateDrawOptions","swapped","resourceTransforms","resourceTransform","_updateModelProps","setupResources","updatedProps","canCreateBufferTransform","canCreateTextureTransform","GPUInterpolationTransition","attributeType","defines","ATTRIBUTE_TYPE","getTransform","bufferOpts","transitionSettings","padBufferOpts","enter","currentLength","aFrom","aTo","vCurrent","TRANSITION_TYPES","getTexture","getFramebuffer","aPrev","aCur","vNext","depthTest","blend","AttributeTransitionManager","transitions","attributeName","animatedAttributes","isNew","TransitionType","AttributeManager","clearRedrawFlags","redraw","updaters","attributeNameArray","triggerName","invalidatedAttributes","_invalidateTrigger","accessorName","transitionUpdated","attributeTransitionManager","changedAttributes","excludeAttributes","extraProps","newAttributes","newAttribute","_createAttribute","triggers","CPUInterpolationTransition","fromValue","toValue","updateSpringElement","cur","distanceSquare","_prevValue","_currValue","nextValue","updateSpring","UniformTransitionManager","propsInTransition","propsChangedReason","compareProps","newProps","oldProps","propTypes","getPropTypes","ignoreProps","updateTriggers","extensions","dataChangedReason","dataChanged","dataComparator","_dataDiff","diffDataProps","updateTriggersChangedReason","diffUpdateTrigger","triggerChanged","diffUpdateTriggers","propsChanged","updateTriggersChanged","extensionsChanged","diffExtensions","transitionsChanged","diffTransitions","propType","comparePropValues","newProp","oldProp","oldExtensions","newTriggers","oldTriggers","LayerType","container","isPlainObject","mergeShaders","mergedInjection","lngLatZToWorldPosition","getWorldPosition","normalizedParams","fromCoordinateSystem","fromCoordinateOrigin","normalizeParameters","originWorld","TYPE_DEFINITIONS","boolean","arrayEqual","valueType","getTypeOf","function","array1","array2","parsePropType","propDef","normalizePropDefinition","createProps","component","propsPrototype","getPropsPrototype","propsInstance","componentClass","defaultProps","getOwnProperty","parentClass","parentDefaultProps","componentPropDefs","propDefs","parsePropTypes","parentProps","componentName","getComponentName","createPropsPrototype","defaultValues","descriptors","getDescriptorForAsyncProp","addAsyncPropsToPropPrototype","nameStr","newPropName","addDeprecatedPropsToPropPrototype","createPropsPrototypeAndTypes","newValue","_asyncIterator","asyncIterator","EMPTY_PROPS","ComponentState","oldAsyncProps","asyncProp","asyncProps","resolvedValues","originalValues","_didAsyncInputValueChange","fetch","loadCount","promise","onDataLoad","pendingLoadCount","chunk","_postProcessValue","previousValue","dataTransform","lastValue","resolvedValue","resolvedLoadCount","counter","Component","internalState","LayerState","attributeManager","isFetchResponse","Response","isFileReadable","File","isFile","isBlob","FileReadableResponse","_getFileReader","reader","text","Headers","_fileOrBlob","fetchFileReadable","fileOrBlob","resolvePath","validateLoaderVersion","coreVersion","loaderVersion","parseVersion","parts","major","minor","NullLog","DEFAULT_LOADER_OPTIONS","CDN","worker","isPureObject","globalOptions","mergeOptions","mergedOptions","addUrlOptions","mergeNestedFields","_AwaitValue","wrapped","AsyncGenerator","front","back","resume","wrappedAwait","settle","_invoke","request","response","errorMessage","ERR_DATA","getUrlFromData","getArrayBufferOrStringFromDataSync","TextDecoder","isArrayBuffer","checkFetchResponseStatus","getLoaderContext","previousContext","fetchFile","getLoaders","loaders","candidateLoaders","contextLoaders","toArrayBuffer","bufferToArrayBuffer","TextEncoder","workerURLCache","buildScript","workerUrl","isTransferable","MessagePort","OffscreenCanvas","getTransferList","recursive","transfers","defaultOnMessage","WorkerThread","onMessage","workerSource","workerURL","getWorkerURL","Worker","betterError","transferList","WorkerPool","maxConcurrency","onDebug","jobName","jobQueue","job","backlog","idleQueue","WorkerFarm","workerPool","workerName","_getWorkerPool","workerPools","canParseWithWorker","parseWithWorker","workerFarm","_workerFarm","onWorkerMessage","getWorkerFarm","warning","arraybuffer","parse","EXT_PATTERN","DATA_URL_PATTERN","selectLoader","nothrow","normalizeLoaders","getRegisteredLoaders","findLoaderByUrl","findLoaderByContentType","findLoaderByExamingInitialData","getFirstCharacters","findLoaderByMimeType","loaderExtension","findLoaderByExtension","testText","testBinary","getMagicString","magic","autoUrl","parseWithLoader","getArrayBufferOrStringFromData","pickingColorCache","async","optional","load","visible","pickable","opacity","onHover","onClick","onDragStart","onDrag","onDragEnd","positionFormat","colorFormat","getPolygonOffset","highlightedObjectIndex","autoHighlight","highlightColor","Layer","layerName","updateObject","stateChanged","_getNeedsRedraw","shouldUpdateState","uniformTransitions","models","pickingEvent","i1","shaders","changeFlags","getNumInstances","getStartIndices","ignoreUnknownAttributes","cacheSize","newCacheSize","pickingColor","getAttributeManager","pickingColors","instancePickingColors","colors","decodePickingColor","viewportChanged","stateNeedsUpdate","updateParams","moduleParameters","offsets","flags","propsOrDataChanged","somethingChanged","diffProps","setChangeFlags","validateProps","encodePickingColor","attributeManagerNeedsRedraw","calculateInstancePickingColors","_onAsyncPropUpdated","oldLayer","_cache","Wrapper","MathArray","arrayOrObject","toObject","to","formatString","minVector","maxVector","vectors","subtract","addScalar","scalar","valid","HashBase","ARRAY16","_a","_b","_c","rotl","fnF","fnG","fnH","fnI","_blockOffset","_length","Stream","EE","EventEmitter","PassThrough","pipe","ondata","pause","ondrain","_isStdio","onclose","didOnEnd","onerror","er","cleanup","listenerCount","ReflectOwnKeys","R","ReflectApply","getOwnPropertyNames","NumberIsNaN","_events","_eventsCount","_maxListeners","defaultMaxListeners","$getMaxListeners","_addListener","listener","prepend","newListener","unshift","warned","emitter","onceWrapper","fired","wrapFn","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","setMaxListeners","getMaxListeners","doError","originalListener","pop","spliceOne","rawListeners","eventNames","CorkedRequest","_this","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","setImmediate","WritableState","internalUtil","OurUint8Array","realHasInstance","destroyImpl","nop","stream","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","hasInstance","_uint8ArrayToBuffer","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","nb","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","zl","zr","sl","sr","hl","hr","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","Algorithm","sha1","sha224","sha256","sha384","sha512","Cipher","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","first","_finalEncrypt","_finalDecrypt","_unpad","deciphers","modes","createCipher","createCipheriv","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","Rand","rand","generate","_rand","getBytes","getByte","randomBytes","bn","crt","priv","blinds","getr","blinder","publicExponent","unblinder","blind","blinded","c1","prime1","c2","prime2","qinv","coefficient","exponent1","m2","exponent2","elliptic","curves","ec","eddsa","pre","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","common","ripemd","hmac","ripemd160","_extends","_react","_react2","_interopRequireDefault","_propTypes2","default","sizerStyle","visibility","overflow","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","styles","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","generateId","AutosizeInput","_Component","inputRef","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","inputId","mounted","copyInputStyles","updateInputWidth","setState","prevProps","prevState","onAutosize","getComputedStyle","inputStyles","scrollWidth","newInputWidth","placeholder","placeholderIsMinWidth","extraWidth","focus","blur","select","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","reduce","currentValue","wrapperStyle","display","inputStyle","boxSizing","inputProps","_objectWithoutProperties","field","cleanInputProps","inputClassName","renderStyles","any","oneOfType","bool","onChange","clearFlags","WEBGL2","VERTEX_ARRAY_OBJECT","TIMER_QUERY","INSTANCED_RENDERING","MULTIPLE_RENDER_TARGETS","ELEMENT_INDEX_UINT32","BLEND_EQUATION_MINMAX","FLOAT_BLEND","COLOR_ENCODING_SRGB","TEXTURE_DEPTH","TEXTURE_FLOAT","TEXTURE_HALF_FLOAT","TEXTURE_FILTER_LINEAR_FLOAT","TEXTURE_FILTER_LINEAR_HALF_FLOAT","TEXTURE_FILTER_ANISOTROPIC","COLOR_ATTACHMENT_RGBA32F","COLOR_ATTACHMENT_FLOAT","COLOR_ATTACHMENT_HALF_FLOAT","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","testTexture","testFb","_awaitAsyncGenerator","_wrapAsyncGenerator","_asyncGeneratorDelegate","inner","awaitWrap","waiting","pump","flatbuffers","inRange","ToDictionary","Offset","Table","SIZEOF_SHORT","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","Encoding","UTF8_BYTES","UTF16_STRING","int32","float32","float64","Float64Array","isLittleEndian","Uint16Array","Long","ZERO","toFloat64","other","Builder","opt_initial_size","initial_size","bb","ByteBuffer","allocate","space","minalign","vtable","vtable_in_use","isNested","object_start","vtables","vector_num_elems","force_defaults","capacity","forceDefaults","dataBuffer","asUint8Array","prep","additional_bytes","align_size","old_buf_size","growByteBuffer","pad","byte_size","writeInt16","writeInt32","writeInt64","writeFloat32","writeFloat64","addInt8","addInt16","addInt32","addInt64","addFloat32","addFloat64","addFieldInt8","voffset","slot","addFieldInt16","addFieldInt32","addFieldInt64","addFieldFloat32","addFieldFloat64","addFieldOffset","addOffset","addFieldStruct","notNested","new_buf_size","nbb","setPosition","startObject","numfields","endObject","vtableloc","trimmed_size","existing_vtable","vt1","outer_loop","vt2","readInt16","root_table","opt_file_identifier","file_identifier","requiredField","table","table_start","vtable_start","readInt32","startVector","elem_size","num_elems","alignment","endVector","createString","utf8","createLong","bytes_","position_","readUint8","readUint16","readUint32","readInt64","readUint64","readFloat32","readFloat64","writeUint8","writeUint16","writeUint32","writeUint64","getBufferIdentifier","__offset","bb_pos","vtable_offset","__union","__string","opt_encoding","__indirect","__vector","__vector_len","__has_identifier","ident","tokens","endOfStream","token","decoderError","fatal","opt_code_point","_streaming","_BOMseen","_fatal","_ignoreBOM","_encoder","_options","UTF8Decoder","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","bite","code_point","UTF8Encoder","input_stream","code_points","cp","codePointsToString","opt_string","stringToCodePoints","_Buffer","useNativeEncoders","decodeUtf8","decoder","encodeUtf8","encoder","ITERATOR_DONE","freeze","_json","_getDOMStream","tee","_getNodeStream","pipeTo","duplex","pipeThrough","_DOMStream","toDOMStream","_nodeStream","toNodeStream","_values","resolvers","_closedPromise","_closedPromiseResolve","return","_ensureOpen","_error","abort","close","BigIntUnavailableError","BigIntUnavailable","asIntN","asUintN","BigInt","BigIntCtor","BigIntAvailable","BigInt64ArrayUnavailableError","BigInt64Array","BigInt64ArrayCtor","BigUint64ArrayUnavailableError","BigUint64Array","BigUint64ArrayCtor","isPromise","isIterable","isArrowJSON","isIteratorResult","isFileHandle","toArrayBufferViewIterator","SharedArrayBuf","SharedArrayBuffer","memcpy","targetByteOffset","sourceByteLength","targetByteLength","joinUint8Arrays","chunks","sliced","xOffset","yOffset","xLen","yLen","collapseContiguousByteRanges","toArrayBufferView","ArrayBufferViewCtor","BYTES_PER_ELEMENT","toInt8Array","Int8Array","toInt16Array","Int16Array","toInt32Array","toUint16Array","toUint32Array","Uint32Array","toFloat32Array","toFloat64Array","toUint8ClampedArray","ArrayCtor","wrap","it","toInt8ArrayIterator","toInt16ArrayIterator","toInt32ArrayIterator","toUint8ArrayIterator","toUint16ArrayIterator","toUint32ArrayIterator","toFloat32ArrayIterator","toFloat64ArrayIterator","toUint8ClampedArrayIterator","toArrayBufferViewAsyncIterator","toInt8ArrayAsyncIterator","toInt16ArrayAsyncIterator","toInt32ArrayAsyncIterator","toUint8ArrayAsyncIterator","toUint16ArrayAsyncIterator","toUint32ArrayAsyncIterator","toFloat32ArrayAsyncIterator","toFloat64ArrayAsyncIterator","toUint8ClampedArrayAsyncIterator","rebaseValueOffsets","valueOffsets","compareArrayLike","fromIterable","fromAsyncIterable","fromDOMStream","fromNodeStream","byteRange","cmd","bufferLength","threw","throw","releaseLock","byobReader","defaultReader","supportsBYOB","getBYOBReader","getDefaultReader","catch","readFromBYOBReader","readInto","onEvent","evt","race","flatbuf","arrow","apache","org","MetadataVersion","UnionMode","Precision","DateUnit","TimeUnit","IntervalUnit","Endianness","Null","__init","builder","startNull","endNull","Struct_","startStruct_","endStruct_","List","startList","endList","LargeList","startLargeList","endLargeList","FixedSizeList","listSize","startFixedSizeList","addListSize","endFixedSizeList","keysSorted","startMap","addKeysSorted","endMap","Union","Sparse","typeIdsOffset","numElems","startUnion","addMode","addTypeIds","endUnion","Int","bitWidth","isSigned","startInt","addBitWidth","addIsSigned","endInt","FloatingPoint","HALF","startFloatingPoint","addPrecision","endFloatingPoint","Utf8","startUtf8","endUtf8","Binary","startBinary","endBinary","LargeUtf8","startLargeUtf8","endLargeUtf8","LargeBinary","startLargeBinary","endLargeBinary","FixedSizeBinary","byteWidth","startFixedSizeBinary","addByteWidth","endFixedSizeBinary","Bool","startBool","endBool","Decimal","startDecimal","addScale","endDecimal","MILLISECOND","unit","startDate","addUnit","endDate","Time","startTime","endTime","Timestamp","SECOND","optionalEncoding","timezoneOffset","startTimestamp","addTimezone","endTimestamp","Interval","YEAR_MONTH","startInterval","endInterval","Duration","startDuration","endDuration","KeyValue","keyOffset","valueOffset","startKeyValue","addKey","addValue","endKeyValue","DictionaryEncoding","indexTypeOffset","isOrdered","startDictionaryEncoding","addId","addIndexType","addIsOrdered","endDictionaryEncoding","Field","NONE","nameOffset","nullable","typeType","typeOffset","dictionaryOffset","childrenOffset","customMetadataOffset","startField","addName","addNullable","addTypeType","addType","addDictionary","addChildren","addCustomMetadata","endField","Schema","Little","endianness","fieldsOffset","startSchema","addEndianness","addFields","endSchema","MessageHeader","FieldNode","null_count","RecordBatch","nodesOffset","buffersOffset","startRecordBatch","addLength","addNodes","addBuffers","endRecordBatch","DictionaryBatch","dataOffset","isDelta","startDictionaryBatch","addData","addIsDelta","endDictionaryBatch","Message","V1","headerType","headerOffset","bodyLength","startMessage","addVersion","addHeaderType","addHeader","addBodyLength","endMessage","BufferType","iterateBits","getBool","_data","_index","getBit","setBool","truncateBitmap","bitmap","alignedSize","packBools","xs","begin","byteIndex","popcnt_bit_range","lhs","rhs","sum","rhsInside","lhsInside","popcnt_array","cnt","view","popcnt_uint32","getUint32","getUint16","getUint8","uint32","nodes","visit","getVisitFn","throwIfNotFound","_node","visitor","dtype","inferDType","visitNull","visitBool","visitInt","Int8","visitInt8","Int16","visitInt16","Int32","visitInt32","Int64","visitInt64","Uint8","visitUint8","Uint16","visitUint16","Uint32","visitUint32","Uint64","visitUint64","Float","visitFloat","Float16","visitFloat16","Float32","visitFloat32","Float64","visitFloat64","visitUtf8","visitBinary","visitFixedSizeBinary","visitDate","DateDay","visitDateDay","DateMillisecond","visitDateMillisecond","visitTimestamp","TimestampSecond","visitTimestampSecond","TimestampMillisecond","visitTimestampMillisecond","TimestampMicrosecond","visitTimestampMicrosecond","TimestampNanosecond","visitTimestampNanosecond","visitTime","TimeSecond","visitTimeSecond","TimeMillisecond","visitTimeMillisecond","TimeMicrosecond","visitTimeMicrosecond","TimeNanosecond","visitTimeNanosecond","visitDecimal","visitList","Struct","visitStruct","visitUnion","DenseUnion","visitDenseUnion","SparseUnion","visitSparseUnion","Dictionary","visitDictionary","visitInterval","IntervalDayTime","visitIntervalDayTime","IntervalYearMonth","visitIntervalYearMonth","visitFixedSizeList","visitMap","typeId","SINGLE","DOUBLE","MICROSECOND","NANOSECOND","DAY","DAY_TIME","Dense","schema","compareFields","fields","others","every","compareField","compareConstructor","compareAny","compareInt","compareFloat","compareDate","compareTimestamp","timezone","compareTime","compareUnion","typeIds","compareInterval","indices","dictionary","proto","toStringTag","typeIdToChildIndex","idx","atomicDictionaryId","getId","strideForType","nullCount","childData","_nullCount","Data","nullBitmap","childStride","_sliceBuffers","_sliceChildren","newLength","VALIDITY","TYPE","OFFSET","DATA","valueOffsetsOrChildren","valueToString","toPrimitive","stringify","createIsValidFunction","nullValues","fnBody","noNaNs","valueToCase","roundLengthUpToNearest64Bytes","BPE","_resize","extra","reserved","reserve","numValid","buffer64","ArrayType64","_ArrayType64","nulls","_nulls","_isValid","new","flush","setValid","setValue","_setValue","numChildren","_offsets","_typeIds","numInvalid","reservedLength","reservedByteLength","queueingStrategy","sizeProperty","numChunks","append","toVector","_pendingLength","_pending","pendingLength","_flushPending","hashFn","_dictionaryOffset","_keysToIndices","valueToKey","keysToIndices","_dictionary","curr","f64","u32","uint16ToFloat64","expo","sigf","sign","NaN","float64ToUint16","bignumToString","bignumToBigInt","isArrowBigNumSymbol","for","BigNum","SignedBigNum","UnsignedBigNum","DecimalBigNum","bignumToNumber","signed","decimalToString","digits","base32","checks","reverse","valueOf","memo","toBigInt","kParent","kRowIndex","kKeyToIdx","kIdxToVal","kCustomInspect","numKeys","ktoi","itov","getIndex","ki","vi","kr","vr","callbackfn","thisArg","createRowProxy","getChildAt","defineRowProxyProperties","findIndex","RowProxyHandler","isExtensible","deleteProperty","preventExtensions","clampIndex","adjust","clampRange","big0","isNaNFast","createElementComparator","search","typeofSearch","valueOfSearch","comparitors","createSubElementsComparator","creatMapComparator","createArrayLikeComparator","createVectorComparator","createObjectComparator","compareArray","compareObject","compareVector","lKeyItr","rKeyItr","rValItr","rVal","lKey","rKey","calculateOffsets","_type","_chunks","_chunkOffsets","_numChildren","Chunked","_sliceInternal","columns","_children","isValidInternal","getInternal","indexOfInternal","arraySet","typedSet","chunkIndex","fromIndex","slices","chunkOffsets","chunkLength","chunkOffset","isDictionary","_indices","selectChunkArgs","_field","Column","column","metadata","rest","some","_chunk","selectArgs","Ctor","vals","_selectArgs","selectFieldArgs","_selectChunkArgs","selectVectorChildrenArgs","_selectVectorChildrenArgs","entries","fieldIndex","valueIndex","dictionaries","generateDictionaryMap","compareSchemas","columnNames","names","columnIndices","curFields","mergeMaps","newFields","f2","newDictionaries","_run","childIndex","_valueToChildTypeId","childTypeId","setEpochMsToMillisecondsLong","epochMs","setVariableWidthBytes","setDateDay","setEpochMsToDays","setDateMillisecond","setNumeric","values64","long","setTimestampSecond","setTimestampMillisecond","setTimestampMicrosecond","setEpochMsToMicrosecondsLong","setTimestampNanosecond","setEpochMsToNanosecondsLong","setTimeSecond","setTimeMillisecond","setTimeMicrosecond","setTimeNanosecond","setDenseUnion","setSparseUnion","setIntervalDayTime","setIntervalYearMonth","itr","_setStructVectorValue","_setStructArrayValue","_setStructObjectValue","newBuilder","defaultOptions","getChildOptions","T","Footer","Block","schemaOffset","dictionariesOffset","recordBatchesOffset","startFooter","addSchema","addDictionaries","addRecordBatches","endFooter","metaDataLength","_Block","_Footer","V4","recordBatches","dictionaryBatches","_recordBatches","_dictionaryBatches","numRecordBatches","getRecordBatch","numDictionaries","getDictionaryBatch","footer","getRootAsFooter","startRecordBatchesVector","startDictionariesVector","db","dictionaryBatchesOffset","finishFooterBuffer","_footer","fileBlock","recordBatchesLength","dictionariesLength","FileBlock","createBlock","toUint8Array","peek","AsyncByteStream","body","cancel","closed","readAt","getInt32","nBytes","file","stat","bytesRead","intAsHex","kPowersOfTen","L","product","lessThan","_times","_plus","out_buffer","posn","group","multiple","times","plus","this_high","other_high","startsWith","L0","L1","L2","L3","R0","R1","R2","R3","sums","Int128","nodesIndex","buffersIndex","nextFieldNode","readNullBitmap","readData","readOffsets","visitMany","readTypeIds","readDictionary","nextBufferRange","sources","isTimestamp","convertArray","isInt","isTime","isDecimal","isBinary","isFixedSizeBinary","binaryDataFromJSON","isBool","isUtf8","joined","startTypeIdsVector","createTypeIdsVector","indexType","recordBatchFromJSON","fieldNodesFromJSON","fieldNodes","validity","buffersFromJSON","schemaFieldsFromJSON","_schema","fromJSON","fieldChildrenFromJSON","customMetadataFromJSON","_metadata","indexTypeFromJSON","typeFromJSON","_Field","_Schema","_Message","_KeyValue","_FieldNode","_Endianness","_DictionaryBatch","header","_version","_headerType","_createHeader","_bodyLength","messageHeaderFromJSON","_message","getRootAsMessage","decodeMessageHeader","isSchema","isRecordBatch","isDictionaryBatch","finishMessageBuffer","_nodes","_buffers","_isDelta","_id","decodeFieldNodes","batch","nodesLength","decodeBuffers","bufferRegions","buffersLength","decodeSchemaFields","fieldsLength","decodeFieldChildren","childrenLength","decodeCustomMetadata","customMetadataLength","customMetadata","decodeIndexType","decodeFieldType","typeIdsArray","childOffsets","childrenVectorOffset","createChildrenVector","metadataOffset","createCustomMetadataVector","dictType","dictMeta","fieldOffsets","startFieldsVector","fieldsVectorOffset","createFieldsVector","platformIsLittleEndian","Big","recordBatch","startNodesVector","nodesVectorOffset","startBuffersVector","b_","buffersVectorOffset","dictionaryBatch","createFieldNode","setInt16","invalidMessageMetadata","expected","invalidMessageBodyLength","readMetadataLength","readMetadata","throwIfNull","readMessage","PADDING","metadataLength","_body","_batchIndex","_dictionaryIndex","batches","flattenDataSources","MAGIC","checkForMagicArrowString","magicLength","magicAndPadding","magicX2AndPadding","_byteLength","_bufferRegions","addBuffer","_nullV","assembler","VectorAssembler","vectorChildren","assembleResult","assembleFlatVector","assembleFlatListVector","firstOffset","lastOffset","assembleListVector","assembleNestedVector","maxChildTypeId","childLengths","shiftedOffsets","unshiftedOffsets","childLength","_position","_started","_sink","_dictionaryBlocks","_recordBatchBlocks","_dictionaryDeltaOffsets","autoDestroy","writeLegacyIpcFormat","_autoDestroy","_writeLegacyIpcFormat","writeAll","writeAllAsync","sink","_writeFooter","compareTo","_writeSchema","payload","_writeRecordBatch","flatbufferSize","prefixSize","nPaddingBytes","of","_writePadding","_writeMessage","assemble","_writeDictionaries","_writeBodyBuffers","_writeDictionaryBatch","writableStrategy","readableStrategy","writer","RecordBatchStreamWriter","_writeMagic","RecordBatchFileWriter","noopBuf","nullBufs","bitmapLength","ensureSameLengthData","batchLength","batchData","_changeLengthAndBackfillNullBitmap","distributeColumnsIntoRecordBatches","distributeVectorsIntoRecordBatches","vecs","batchArgs","numBatches","numColumns","POSITIVE_INFINITY","distributeChildData","uniformlyDistributeChunksAcrossRecordBatches","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","_bindDataAccessors","VectorName","isConcatSpreadable","vectorFromValuesWithType","ArrowType","InputType","typeCtor","dataCtor","is64bit","_values64","toBigInt64Array","toBigUint64Array","_row","bound","partial0","partial2","epochMillisecondsLongToMs","epochMillisecondsToDate","getVariableWidthBytes","getDateDay","epochDaysToMs","epochDaysToDate","getDateMillisecond","epochMillisecondsLongToDate","getNumeric","getTimestampSecond","getTimestampMillisecond","getTimestampMicrosecond","epochMicrosecondsLongToMs","getTimestampNanosecond","epochNanosecondsLongToMs","getTimeSecond","getTimeMillisecond","getDenseUnion","getSparseUnion","getIntervalDayTime","getIntervalYearMonth","int32s","_vector","decimal","indexOfValue","searchElement","indexOfNull","indexOfUnion","vectorIterator","getFn","nullByte","nullBit","nullableIterator","arrayOfVector","variableWidthColumnErrorMessage","____","visitFields","newDataType","throughIterable","throughAsyncIterable","getByteWidth","wrapNullableSet","VectorCtor","partialType0","getColumnAt","getColumnIndex","Writer","nameToIndex","selectAt","columnName","newIdx","oldToNew","_f","_fs","empty","fromStruct","tableFromIterable","tableFromAsyncIterable","isSync","open","opening","cols","_dictionaries","collect","DictionaryCollector","readAllSync","impl","_impl","isAsync","isStream","readRecordBatch","RecordBatchReader","fromArrowJSON","fromFileHandle","fromAsyncByteStream","fromByteStream","readAllAsync","_recordBatchIndex","_loadVectors","_reader","shouldAutoDestroy","readSchema","_readNextMessageAndValidate","readMessageBody","_loadRecordBatch","_loadDictionaryBatch","_readFooter","_readDictionaryBatch","seek","_numChunks","_finished","_bufferedSize","builderOptions","_controller","_builder","_getSize","chunkByteLength","readableHighWaterMark","ReadableStream","_maybeFlush","WritableStream","_writeValueAndReturnChunkSize","bufferedSize","controller","desiredSize","_enqueue","enqueue","Value","ge","le","colidx","expr","_bindLitLit","_bindLitCol","_bindColLit","_bindColCol","And","Or","_batch","rtrn","left_func","right_func","col","lit","col_func","lastDictionary","reverseLookup","lastKey","countBy","scan","scanReverse","predicate","batchIndex","numRows","count_by","countByteLength","counts","_predicate","FilteredDataFrame","bm","pull","asyncIterableAsReadableDOMStream","iterableAsReadableDOMStream","MODULE_INJECTORS","DECLARATION_INJECT_MARKER","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","injectShader","injectStandardStubs","isVertex","fragmentData","fragmentString","injects","glFormatToComponents","sourceX","sourceY","sourceFormat","sourceAttachment","sourceWidth","sourceHeight","sourceType","deleteFramebuffer","getPixelArray","targetMaxHeight","MAX_SAFE_INTEGER","imageData","copyToTexture","targetX","targetY","targetMipmaplevel","targetInternalFormat","isSubCopy","toFramebuffer","pixelArray","propChecks","replacement","replacementProp","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","mark","awrap","skipTempReset","charAt","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","webpackPolyfill","paths","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","path","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","_finalized","throwIfNotStringOrBuffer","ReadableState","EElistenerCount","debugUtil","debuglog","BufferList","kProxyEvents","readableObjectMode","readableHwm","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","howMuchToRead","head","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onfinish","cleanedUp","pipeOnDrain","increasedAwaitDrain","dests","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_this2","err2","K","W","Sha256","_w","maj","sigma0","sigma1","gamma0","_g","_h","T1","T2","H","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","pbkdf2","MAX_ALLOC","checkBuffer","iterations","checkParameters","sizes","rmd160","saltLen","getDigest","ipad1","ipad2","DK","block1","destPos","hLen","U","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","DESState","DES","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","lStart","rStart","keyL","keyR","incr32","getBlock","_cipher","_prev","encrypt","chunkNum","aes","GHASH","StreamCipher","ck","_ghash","_finID","ghash","toPad","ivBits","calcIv","_secCache","_alen","_mode","_authTag","_called","rump","xorTest","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","n2","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","n1","rn1","getDivisor","ch32","maj32","p32","ft_1","s0_256","s1_256","g0_256","g1_256","shaCommon","sha256_K","SHA256","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","reporter","save","restore","fail","skip","_reporterState","raw","_reverse","der","DERDecoder","entity","tree","DERNode","derDecodeTag","cls","tagClass","primitive","oct","tagStr","derDecodeLen","_decode","_peekTag","decodedTag","_decodeTag","_skipUntilEnd","_decodeList","possibleEnd","_decodeStr","unused","numstr","_isNumstr","printstr","_isPrintstr","_decodeObjid","identifiers","subident","second","_decodeTime","year","mon","day","hour","sec","UTC","_decodeNull","_decodeBool","_decodeInt","_use","_getDecoder","DEREncoder","_encodeComposite","content","encodedTag","tagByName","tagClassByName","encodeTag","_createEncoderBuffer","lenOctets","_encodeStr","_encodeObjid","objid","_encodeTime","date","getFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","_encodeBool","_getEncoder","_skipDefault","_baseState","defaultBuffer","_encodeValue","createHash","i2ops","seed","paddedMsg","polyfillExtension","target2","extKey","polyfill","EXTENSIONS","initializeExtensions","polyfills","installPolyfills","installOverrides","self_","document_","console_","DEFAULT_MODULE_OPTIONS","pickingSelectedColor","pickingHighlightColor","pickingActive","pickingAttribute","selectedColor","order","injection","Vector","mathArray","distanceSquared","dist","ORIGIN","Vector3","radians","origin","matrix4","transformAsPoint","matrix3","matrix2","quaternion","Matrix","columnIndex","firstIndex","columnVector","INDICES","COL0ROW0","COL0ROW1","COL0ROW2","COL0ROW3","COL1ROW0","COL1ROW1","COL1ROW2","COL1ROW3","COL2ROW0","COL2ROW1","COL2ROW2","COL2ROW3","COL3ROW0","COL3ROW1","COL3ROW2","COL3ROW3","Matrix4","m00","m10","m20","m30","m01","m11","m21","m31","m02","m12","m22","m32","m03","m13","m23","m33","halfY","scaleResult","getScale","inverseScale0","inverseScale1","inverseScale2","ry","rz","factor","transformAsVector","column0Row0","column1Row1","column2Row0","column2Row1","column3Row2","TinySDF","radius","cutoff","getContext","font","textBaseline","fillStyle","gridOuter","gridInner","middle","edt","edt1d","draw","char","clearRect","fillText","imgData","getImageData","alphaChannel","registeredLoaders","registerLoaders","normalizedLoader","registeredLoader","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","lastThis","lastResult","lastArgs","calledOnce","newArgs","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","before","_proto","insert","rule","_tag","setAttribute","appendChild","createTextNode","createStyleElement","nextSibling","insertBefore","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","removeChild","stylis_min","ia","F","P","substring","ka","aa","ba","la","ma","na","ea","oa","J","ca","O","da","fa","E","ha","Q","use","toSheet","Sheet","ruleSheet","selectors","parents","ns","at","createCache","stylisOptions","stylis","Stylis","inserted","_insert","querySelectorAll","getAttribute","stylisPlugins","selector","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","insertStyles","isStringTag","murmurhash2_32_gc","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","lineHeight","orphans","tabSize","widows","zIndex","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","cursor","unitless","handleInterpolation","mergedProps","couldBeSelectorInterpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","strings","lastIndex","identifierName","exec","hashString","css","EmotionCacheContext","createContext","HTMLElement","ThemeContext","CacheProvider","Provider","withEmotionCache","forwardRef","Consumer","typePropName","render","theme","cssProp","Emotion","jsx","argsLength","createElementArgArray","classnames","toAdd","ClassNames","cx","_len2","_key2","ele","applyPrefixToName","cleanValue","isDocumentElement","documentElement","getScrollTop","pageYOffset","scrollTop","scrollTo","easeOutCubic","animatedScrollTo","change","increment","currentTime","animateScroll","requestAnimationFrame","isTouchCapable","getMenuPlacement","_ref","menuEl","minHeight","placement","shouldScroll","isFixedPosition","spacing","scrollParent","excludeStaticParent","overflowRx","docEl","parentElement","overflowY","overflowX","getScrollParent","defaultState","offsetParent","scrollHeight","getBoundingClientRect","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","innerHeight","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","MenuPlacer","_getPrototypeOf2","maxMenuHeight","_this$props","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","getPlacement","placerProps","getUpdatedProps","PropTypes","noticeCSS","_ref5","_ref5$theme","baseUnit","neutral40","textAlign","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","getStyles","innerProps","LoadingMessage","MenuPortal","_Component2","_getPrototypeOf3","_ref7","_this$props2","appendTo","controlElement","isFixed","rect","getBoundingClientObj","scrollDistance","menuWrapper","createPortal","keyList","hasProp","exportedEqual","arrA","arrB","dateA","dateB","regexpA","RegExp","regexpB","$$typeof","ValueContainer","isMulti","hasValue","_templateObject","_ref2","Svg","viewBox","focusable","CrossIcon","DownChevron","baseCSS","_ref3","isFocused","_ref3$theme","label","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","keyframes","LoadingDot","_ref6","_css","animation","backgroundColor","borderRadius","marginLeft","verticalAlign","LoadingIndicator","isRtl","indicator","isHidden","background","outline","MultiValueGeneric","_ref4","MultiValueContainer","MultiValueLabel","MultiValueRemove","MultiValue","isDisabled","removeProps","selectProps","Container","Label","Remove","emotionCx","cropWithEllipsis","ClearIndicator","Control","innerRef","menuIsOpen","control","DropdownIndicator","Group","Heading","headingProps","GroupHeading","cleanProps","IndicatorsContainer","indicators","IndicatorSeparator","disabled","Menu","menu","MenuList","Option","isSelected","option","Placeholder","SelectContainer","SingleValue","diacritics","letters","stripDiacritics","trimString","defaultStringify","A11yText","DummyInput","in","onExited","appear","exit","emotion","NodeResolver","findDOMNode","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","stopPropagation","preventInertiaScroll","totalScroll","currentScroll","offsetHeight","isTouchDevice","maxTouchPoints","canUseDOM","activeScrollLocks","ScrollLock","capture","passive","accountForScrollbars","touchScrollTarget","targetStyle","originalStyles","currentPadding","paddingRight","adjustedPadding","innerWidth","listenerOptions","_this3","_ref$1","ScrollBlock","_PureComponent","activeElement","blurSelectInput","getScrollTarget","PureComponent","ScrollCaptor","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","isBottom","isTop","cancelScroll","handleEventDelta","touchStart","startListening","stopListening","onWheel","onTouchStart","onTouchMove","React","ScrollCaptorSwitch","instructionsAriaMessage","isSearchable","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","_ref$theme","alignItems","neutral5","neutral0","borderColor","neutral10","primary","borderStyle","borderWidth","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","paddingBottom","paddingTop","groupHeading","paddingLeft","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","margin","loadingIndicator","marginRight","loadingMessage","_ref2$theme","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","WebkitTapHighlightColor","primary50","neutral50","singleValue","maxWidth","valueContainer","defaultTheme","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionLabel","getOptionValue","isLoading","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","tabIndex","tabSelectsValue","instanceId","Select","_props","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","controlRef","focusedOptionRef","menuListRef","focusInput","blurInput","actionMeta","action","onInputChange","inputIsHiddenAfterUpdate","onMenuClose","clearFocusValueOnUpdate","_this$props3","isOptionSelected","announceAriaLiveSelection","removedValue","lastSelectedValue","custom","instancePrefix","_this$state","blockOptionHover","tagName","openMenu","openAfterFocus","_this$props4","clearValue","isComposing","initialTouchX","initialTouchY","userIsDragging","contains","onControlMouseDown","onClearIndicatorMouseDown","onDropdownIndicatorMouseDown","inputValue","currentTarget","onMenuOpen","_this$props5","onFocus","announceAriaLiveContext","onBlur","_this$props6","hideSelectedOptions","_this$props7","isClearable","onKeyDown","_this$state2","defaultPrevented","focusValue","removeValue","popValue","shiftKey","selectOption","keyCode","focusOption","cacheComponents","_selectValue","_menuOptions","buildMenuOptions","startListeningComposition","startListeningToTouch","onScroll","autoFocus","_this$props8","getNextFocusedValue","getNextFocusedOption","_this$props9","scrollToFocusedOptionOnUpdate","focusedEl","menuRect","focusedRect","overScroll","offsetTop","scrollIntoView","stopListeningComposition","stopListeningToTouch","_this$props10","_this$state3","openAtIndex","selectedIndex","_this$props11","_this$state4","focusedIndex","nextFocus","_this$state5","classNamePrefix","getTheme","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","_this$props12","formatOptionLabel","onCompositionStart","onCompositionEnd","onTouchEnd","_props$inputValue","toOption","shouldHideSelectedOptions","onOptionHover","onSelect","optionId","getElementId","onMouseMove","onMouseOver","itemIndex","hasGroups","groupId","_this$state7","_this$props13","focusedValueMsg","valueFocusAriaMessage","focusedOptionMsg","optionFocusAriaMessage","resultsMsg","screenReaderMessage","resultsAriaMessage","countOptions","_this$props14","getInputRef","onInputBlur","onInputFocus","readOnly","ariaAttributes","_this$commonProps","commonProps","autoCapitalize","autoComplete","autoCorrect","handleInputChange","spellCheck","_this4","_this$components","_this$props15","_this$state8","opt","isOptionFocused","onMouseDown","_this$props16","onClearIndicatorTouchEnd","_this$props17","_this$components2","onDropdownIndicatorTouchEnd","_this5","_this$components3","_this$state9","_this$props18","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","getFocusedOptionRef","hasOptions","headingId","menuPlacementProps","menuElement","_ref6$placerProps","onMenuMouseDown","onMenuMouseMove","getMenuListRef","_this6","_this$props19","_value","constructAriaLiveMessage","_this$components4","_this$props20","getCommonProps","renderLiveRegion","getControlRef","onControlTouchEnd","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","defaultInputValue","defaultMenuIsOpen","SelectComponent","_class","_temp","StateManager","callProp","getProp","getScratchArray","getBrowser","navigator_","isMSIE","isTrident","ERR_ELEMENTS","VertexArrayObject","isDefaultArray","setProps","elementBuffer","setElementBuffer","disablingAttributeZero","constantAttributeZero","_normalizeConstantArrayValue","updateNeeded","_compareConstantArrayValues","arrayValue","v1","v2","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","MAX_ATTRIBUTES","drawParams","vertexArrayObject","locationOrName","appAccessor","_resolveLocationAndAccessor","instanceCount","valueAccessor","_getAttributeIndex","accessInfo","_getAttributeInfo","currentAccessor","configuration","getAttributeInfo","multiLocation","locationOffset","getAttributeLocation","getConstantBuffer","indexCount","elements","elementsAccessor","formatArrayValue","maxElts","terminator","isInteger","getDebugTableRow","vertexArray","verts","getGLSLDeclaration","typeAndName","getDebugTableForUniforms","undefinedOnly","SHADER_MODULE_UNIFORM_REGEXP","PROJECT_MODULE_UNIFORM_REGEXP","uniformLocations","uniformNames","uniformName","addUniformToTable","unusedCount","unusedTable","uniform","isDefined","isUniformDefined","attributeInfo","GLTF_TO_LUMA_ATTRIBUTE_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","TEXCOORD_1","TEXCOORD_2","mapAttributeName","attributeMap","inferAttributeAccessor","category","NOOP","DRAW_PARAMS","Model","ProgramManager","bufferMode","getModuleUniforms","_attributes","geometry","remappedName","getBuffersFromGeometry","normalizedAttributes","programManager","setUniforms","moduleSettings","logPriority","_logDrawCallStart","indexOffset","vertexArrayInstanced","onBeforeRender","onAfterRender","didDraw","unbindModels","_programDirty","stateHash","geometryBuffers","animationProps","animatedUniforms","_evaluateAnimateUniforms","logDrawTimeout","collapsed","attributeTable","rowHeader","getDebugTableForVertexArray","uniformTable","missingTable","configTable","glslDeclaration","varyingInfo","getDebugTableForProgramConfiguration","transpileShader","targetGLSLVersion","convertVertexShaderTo300","convertFragmentShaderTo300","convertVertexShaderTo100","convertFragmentShaderTo100","ShaderModule","deprecations","vertexShader","fragmentShader","_parseDeprecationDefinitions","injections","stage","hook","normalizeInjections","moduleSource","_defaultGetUniforms","shaderSource","def","resolveModules","getShaderDependencies","instantiateModules","seen","moduleMap","moduleDepth","getDependencyGraph","isOldIE","WEBGL_FEATURES","compiledGlslExtensions","canCompileGLGSExtension","cap","feature","extensionName","behavior","shader","canCompile","getFeature","hasFeatures","features","INJECT_SHADER_DECLARATIONS","SHADER_TYPE","assembleShaders","assembleShader","assembleGetUniforms","hookFunctions","prologue","sourceLines","glslVersion","versionLine","coreSource","allDefines","assembledSource","getShaderName","getShaderType","gpuVendor","identifyGPUVendor","getContextInfo","debugInfo","getPlatformShaderDefines","isFragment","versionDefines","getVersionDefines","sourceText","getApplicationDefines","normalizeHookFunctions","hookInjections","mainInjections","hookFunction","getHookFunctions","moduleUniforms","_defaultModules","moduleName","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","varyingHashes","defineKeys","injectKeys","defineHashes","injectHashes","_programCache","assembled","_hookFunctions","_getUniforms","_useCounts","_hashes","appModules","FACES","TextureCube","mipmapLevel","_subImage","imageDataMap","facePixels","resolvedFaces","Texture3D","unpackFlipY","overrides","TextureType","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","_owner","keyPrefix","escape","V","Children","only","createRef","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","lazy","_ctor","_status","_result","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","Fragment","Profiler","StrictMode","Suspense","cloneElement","createFactory","isValidElement","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","extractEvents","eventTypes","phasedRegistrationNames","registrationName","pa","qa","sa","ua","va","wa","ra","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Xa","_debugOwner","_debugSource","fileName","lineNumber","Ya","Za","$a","ab","eb","fb","gb","hb","ib","kb","lb","mb","ob","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","sb","ub","vb","qb","pb","removeAttribute","setAttributeNS","wb","nodeName","yb","_valueTracker","stopTracking","xb","zb","Ab","defaultChecked","_wrapperState","initialChecked","Bb","initialValue","controlled","Cb","Eb","Fb","Gb","Ib","Hb","Jb","selected","defaultSelected","Kb","Lb","Mb","Nb","textContent","xlinkHref","Ob","Pb","Qb","Rb","Sb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","firstChild","Tb","lastChild","nodeType","nodeValue","Ub","Vb","animationend","animationiteration","animationstart","transitionend","Wb","Xb","Yb","Zb","$b","ac","bc","cc","alternate","effectTag","fc","memoizedState","dehydrated","gc","ic","sibling","hc","jc","kc","lc","mc","nc","oc","pc","qc","rc","sc","tc","uc","vc","zc","blockedOn","topLevelType","eventSystemFlags","nativeEvent","Ac","delete","Bc","Cc","Ec","Fc","unstable_runWithPriority","priority","hydrate","containerInfo","Gc","Hc","Ic","Jc","Kc","unstable_scheduleCallback","unstable_NormalPriority","Lc","Mc","srcElement","correspondingUseElement","Nc","Oc","dispatchConfig","Pc","_targetInst","Qc","Rc","Sc","Tc","Uc","Interface","isDefaultPrevented","returnValue","Wc","eventPool","Xc","destructor","Vc","getPooled","cancelBubble","persist","eventPhase","bubbles","cancelable","isTrusted","Yc","animationName","elapsedTime","pseudoElement","Zc","clipboardData","$c","detail","ad","relatedTarget","bd","charCode","cd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","dd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","ed","Alt","Meta","Shift","gd","getModifierState","hd","ctrlKey","altKey","metaKey","repeat","locale","jd","kd","ld","md","nd","screenX","screenY","pageX","pageY","buttons","fromElement","toElement","movementX","movementY","od","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","pd","dataTransfer","qd","rd","sd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","yd","zd","Ad","Bd","Cd","Dd","bubbled","captured","eventPriority","Ed","getEventPriority","Fd","unstable_UserBlockingPriority","Gd","Hd","Jd","Kd","targetInst","ancestors","Ld","Md","Nd","Od","Pd","Qd","Dc","Rd","Sd","WeakMap","xc","yc","Td","gridArea","lineClamp","Ud","Vd","Wd","setProperty","Xd","menuitem","area","embed","img","keygen","link","track","wbr","Yd","Zd","is","$d","ae","be","ce","de","fe","HTMLIFrameElement","contentWindow","href","contentEditable","me","ne","oe","pe","qe","previousSibling","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","documentMode","Ie","Je","Ke","Le","beforeInput","compositionEnd","compositionStart","compositionUpdate","Me","Ne","Oe","Pe","Se","Qe","Re","Te","datetime","email","month","tel","week","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","detachEvent","df","ef","attachEvent","ff","gf","hf","lf","jf","_isInputEventSupported","kf","mouseEnter","mouseLeave","pointerEnter","pointerLeave","mf","pf","qf","rf","sf","tf","uf","vf","wf","xf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","yf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","unstable_cancelCallback","Of","unstable_shouldYield","Pf","unstable_requestPaint","Qf","unstable_now","Rf","unstable_getCurrentPriorityLevel","Sf","unstable_ImmediatePriority","Tf","Uf","Vf","unstable_LowPriority","Wf","unstable_IdlePriority","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","childExpirationTime","vg","firstContext","expirationTime","wg","xg","observedBits","responders","yg","zg","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Ag","Bg","suspenseConfig","nextEffect","Cg","Dg","updateQueue","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Sg","_reactInternalFiber","Pg","Qg","Rg","Tg","shouldComponentUpdate","Ug","contextType","Vg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Wg","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Xg","Yg","_stringRef","Zg","$g","elementType","implementation","ta","ih","jh","kh","lh","mh","nh","oh","qh","memoizedProps","revealOrder","rh","responder","sh","th","uh","vh","wh","Ah","Bh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","baseUpdate","Oh","Ph","Qh","lastRenderedReducer","dispatch","lastRenderedState","eagerReducer","eagerState","Rh","Sh","Th","Uh","deps","Vh","Wh","Xh","Yh","Zh","$h","bi","readContext","useResponder","useDeferredValue","useTransition","unstable_next","ci","di","ei","fi","gi","pendingProps","ii","ji","li","mi","ni","oi","pi","qi","ri","si","ti","ui","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","getDerivedStateFromError","wi","pendingContext","Hi","Ji","Ki","retryTime","yi","fallback","unstable_avoidThisFallback","zi","Ai","isBackwards","rendering","tailExpiration","tailMode","Bi","Ci","Li","Mi","Ni","onclick","Oi","WeakSet","Pi","Si","Ri","Ti","Ui","__reactInternalSnapshotBeforeUpdate","Vi","Wi","componentWillUnmount","Qi","Xi","Yi","Zi","$i","_reactRootContainer","aj","wasMultiple","bj","cj","dj","ej","fj","gj","hj","ij","componentDidCatch","jj","componentStack","gk","kj","lj","mj","wj","xj","yj","zj","Aj","Bj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","timeoutMs","Kj","Lj","Mj","Nj","Oj","lastExpiredTime","Pj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Qj","Rj","Sj","Tj","Uj","Vj","Wj","finishedWork","finishedExpirationTime","lastSuspendedTime","Xj","timeoutHandle","Yj","busyMinDurationMs","busyDelayMs","Zj","bk","pingCache","dk","ek","fk","createElementNS","firstSuspendedTime","rangeCount","Db","focusedElem","selectionRange","jk","ee","compareDocumentPosition","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","Dh","dc","fd","hk","Eh","Fh","xk","Di","Ei","Fi","xd","Gi","kk","lk","mk","hidden","Va","nk","unstable_observedBits","pk","pendingChildren","qk","rk","sk","tk","uk","vk","wc","_internalRoot","wk","zk","hasAttribute","yk","Ak","Bk","unmount","form","ak","Ck","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","flushSync","Events","findFiberByHostInstance","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","ok","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","Dk","Ek","MessageChannel","unstable_forceFrameRate","performance","cancelAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","priorityLevel","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","initSqlJsPromise","initSqlJs","moduleConfig","resolveModule","Module","originalOnAbortFunction","errorThatCausedAbort","DONE","handleError","getBlob","FLOAT","getColumnNames","getAsObject","freemem","free","filename","prepare","getRowsModified","create_function","cwrap","SQL","Database","NOMEM","NOTFOUND","onRuntimeInitialized","importScripts","__dirname","readFileSync","readbuffer","print","printErr","currentScript","XMLHttpRequest","send","responseText","responseType","thisProgram","wasmBinary","WebAssembly","HEAP8","HEAP16","HEAP32","HEAPU8","HEAPU16","HEAPU32","HEAPF32","HEAPF64","TOTAL_MEMORY","dynCall_v","dynCall_vi","wasmMemory","Memory","initial","preRun","preloadedImages","preloadedAudios","locateFile","asm","monitorRunDependencies","clearInterval","credentials","instantiate","wasi_unstable","asm2wasm","instantiateWasm","instantiateStreaming","memory","maximum","__memory_base","__table_base","___errno_location","rdev","tty","seekable","stdin","platform","openSync","readSync","closeSync","prompt","readline","createNode","lookup","rename","unlink","rmdir","readdir","symlink","readlink","dev","ino","nlink","gid","atime","mtime","ctime","blocks","1024","O_APPEND","64","O_CREAT","128","O_EXCL","0","O_RDONLY","O_RDWR","4096","O_SYNC","512","O_TRUNC","1","O_WRONLY","root","lstatSync","chmodSync","truncateSync","mkdirSync","writeFileSync","renameSync","unlinkSync","rmdirSync","readdirSync","symlinkSync","readlinkSync","writeSync","fstatSync","xw","willDeletePath","onDeletePath","logReadFiles","onOpenFile","onWriteToFile","_usleep","USER","LOGNAME","PATH","PWD","HOME","LANG","languages","ga","fsync","$","grow","LN10","toTimeString","getTimezoneOffset","getSeconds","getMinutes","getHours","getDate","getMonth","getDay","hardwareConcurrency","extraStackTrace","_RegisterExtensionFunctions","___emscripten_environ_constructor","__get_daylight","__get_timezone","__get_tzname","_free","_malloc","_memalign","_memset","_sqlite3_bind_blob","_sqlite3_bind_double","_sqlite3_bind_int","_sqlite3_bind_parameter_index","_sqlite3_bind_text","_sqlite3_changes","_sqlite3_clear_bindings","_sqlite3_close_v2","_sqlite3_column_blob","_sqlite3_column_bytes","_sqlite3_column_double","_sqlite3_column_name","_sqlite3_column_text","_sqlite3_column_type","_sqlite3_create_function_v2","_sqlite3_data_count","_sqlite3_errmsg","_sqlite3_exec","_sqlite3_finalize","_sqlite3_free","_sqlite3_open","_sqlite3_prepare_v2","_sqlite3_reset","_sqlite3_result_blob","_sqlite3_result_double","_sqlite3_result_error","_sqlite3_result_int","_sqlite3_result_int64","_sqlite3_result_null","_sqlite3_result_text","_sqlite3_step","_sqlite3_value_blob","_sqlite3_value_bytes","_sqlite3_value_double","_sqlite3_value_int","_sqlite3_value_text","_sqlite3_value_type","stackAlloc","stackRestore","stackSave","noFSInit","postRun","setStatus","onAbort","preInit","b64","lens","getLens","validLen","placeHoldersLen","Arr","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","isLE","mLen","eLen","eMax","eBias","nBits","rt","LN2","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","randomFill","randomFillSync","createCredentials","scope","Timeout","clearFn","_clearFn","setInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","channel","installMessageChannelImplementation","html","script","onreadystatechange","installReadyStateChangeImplementation","task","localStorage","trace","Sha","rotl30","ft","Sha1","rotl5","Sha224","Sha384","ZERO_BUF","subtle","toBrowser","browserPbkdf2","importKey","deriveBits","resolvePromise","prom","checkNative","resp","aesModes","desModes","ebtk","suite","des","EDE","modeName","_des","des3","CBCState","_cbcInit","_cbcState","superProto","EDEState","k3","_edeState","MODES","AuthCipher","Splitter","_autopadding","thing","setTo","padBuff","encryptStart","encryptByte","byteParam","shiftIn","ZEROES","fromArray","_multiply","lsbVi","abl","_last","padded","unpad","autoPadding","generatePrime","DH","ENCODINGS","genc","SEVEN","setPublicKey","pub","_pub","setPrivateKey","_priv","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","formatReturnValue","hex","checkPrime","__gen","generateKeys","_gen","getPublicKey","computeSecret","secret","getPrime","getPrivateKey","getGenerator","verify","algorithms","_hashType","_signType","sig","EC","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","q1","q2","_endoWnafMulAdd","npoints","ncoeffs","endoMul","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","zinv","zinv2","pz2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","mm","yyu4","kbase","z3","pz3","eqXToP","zs","MontCurve","i4","a24","diffAdd","jumlAdd","EdwardsCurve","twisted","mOneA","oneC","_mulA","_mulC","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","sha1_K","SHA1","SHA224","SHA384","outer","HmacDRBG","KeyPair","Signature","keyPair","fromPrivate","keyFromPublic","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","entropyEnc","ns2","_truncateToN","truncOnly","bkey","getPrivate","ns1","kp","kpX","recoveryParam","canonical","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","octetLen","rmPadding","constructLength","octets","slen","backHalf","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","seq","int","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","explicit","ECParameters","choice","namedCurve","Entity","_createNamed","named","runInThisContext","_initNamed","Object_keys","defineProp","Script","runInContext","iframe","win","wEval","eval","wExecScript","execScript","winKeys","runInNewContext","isContext","createScript","errors","ReporterError","rethrow","pathLen","enterKey","exitKey","leaveKey","enterObject","leaveObject","inherited","elem","partial","wrapResult","captureStackTrace","methods","reverseArgs","useDecoder","implicit","_wrap","stateProps","cstate","_useArgs","newKey","prevObj","present","prevKey","_decodeGeneric","_decodeChoice","_getUse","_encodeChoice","_encodePrimitive","pem","PEMDecoder","lines","PEMEncoder","asn","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","inenc","mgf","withPublic","publicKey","iHash","hLen2","ps","dblen","maskedDb","maskedSeed","oaep","nonZero","pkcs1","zBuffer","dif","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","_getRequireWildcardCache","newObj","hasPropertyDescriptor","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","getShim","isRequired","ReactPropTypes","symbol","arrayOf","instanceOf","objectOf","oneOf","shape","exact","checkPropTypes","upgradeMessage","methodName","isFeatureSupported","featureDefinition","isSupported","queryFeature","__VERSION__","checkIfBrowser","getStorage","storage","LocalStorage","updateConfiguration","serializedConfiguration","getItem","formatImage","imageUrl","COLOR","BLACK","RED","GREEN","YELLOW","BLUE","MAGENTA","CYAN","WHITE","BRIGHT_BLACK","BRIGHT_RED","BRIGHT_GREEN","BRIGHT_YELLOW","BRIGHT_BLUE","BRIGHT_MAGENTA","BRIGHT_CYAN","BRIGHT_WHITE","getColor","autobind","predefined","propNames","getHiResTimestamp","originalConsole","enabled","ONCE","getTableHeader","Log","_storage","_getLogFunction","oldUsage","newUsage","_shouldLog","logImageInBrowser","asciify","fit","logImageInNode","setting","normalizeArguments","getLevel","normalizeLogLevel","decorateMessage","newLevel","newPriority","resolvedLevel","messageType","leftPad","ms","formatted","Stat","sampleSize","lastSampleCount","lastSampleTime","_samples","Stats","_getOrCreate","average","hz","fileAliases","TransformFeedback","_getVaryingIndex","_getBufferParams","byteSize","primitiveMode","getVaryingInfo","DRAW_MODE","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Geometry","_calculateVertexCount","_print","nodeVersion","LINEARLY_INTERPOLATED_PROPS","FlyToInterpolator","transitionDuration","channelHandles","animationHandles","Timeline","rate","animationHandle","animations","animationData","channelHandle","lastEngineTime","engineTime","offsetTime","DEFAULT_DISTANCE_SCALES","metersPerUnit","Viewport","_frustumPlanes","orthographic","isGeospatial","_getCenterInWorld","meterOffset","center2d","commonPosition","_createProjectionMatrix","viewportMatrix","DEFAULT_MODULES","SHADER_HOOKS","createProgramManager","shaderModule","shaderHook","INITIAL_CONTEXT","layerManager","deck","shaderCache","pickingFBO","mousePosition","LayerManager","activateViewport","layerNeedsRedraw","_needsRedraw","_needsUpdate","layerIds","layers","layerId","newLayers","shouldUpdate","oldViewport","oldLayers","oldLayerMap","generatedLayers","_updateSublayersRecursively","error2","_finalizeOldLayers","firstError","newLayer","sublayers","_debug","_updateLayer","_initializeLayer","_finalizeLayer","deepEqual","ViewManager","onViewStateChange","onInteractiveStateChange","controllers","_viewports","viewMap","viewOrViewId","views","viewId","getView","viewState","_viewportMap","viewports","_diffViews","Controller","eventManager","_onViewStateChange","onStateChange","_eventCallbacks","controllerProps","_createController","oldControllers","getViewState","_updateController","newViews","oldViews","PERCENT_OR_PIXELS_REGEX","parsePosition","getPosition","extent","View","viewportInstance","filterViewState","viewportDimensions","getDimensions","_getViewport","newViewState","defaultOpts","ViewportType","viewportOpts","LinearInterpolator","transitionProps","TRANSITION_EVENTS","DEFAULT_PROPS","transitionEasing","transitionInterpolator","transitionInterruption","onTransitionStart","onTransitionInterrupt","onTransitionEnd","TransitionManager","_onTransitionUpdate","transitionTriggered","_shouldIgnoreViewportChange","_isTransitionEnabled","interruption","interpolator","arePropsEqual","_isUpdateDueToCurrentTransition","startViewstate","initialProps","_onTransitionEnd","interactionState","inTransition","oldViewState","NO_TRANSITION_PROPS","EVENT_TYPES","isDragging","handleEvent","ControllerState","_onPanStart","_onPan","_onPanEnd","_onPinchStart","_onPinch","_onPinchEnd","_onDoubleTap","_onWheel","_onKeyDown","inside","_state","scrollZoom","dragPan","dragRotate","doubleClickZoom","touchZoom","touchRotate","keyboard","isInteractive","eventName","newControllerState","controllerState","isPointInBounds","panStart","alternateMode","isFunctionKeyPressed","invertPan","_onPanMove","_onPanRotate","panEnd","isPanning","isRotating","pan","deltaScaleX","deltaScaleY","isZooming","zoomStart","startPinchRotation","zoomEnd","isZoomOut","funcKey","customEvents","ViewState","_applyConstraints","LINEAR_TRANSITION_PROPS","MAPBOX_LIMITS","DEFAULT_STATE","MapState","minZoom","maxPitch","minPitch","startPanLngLat","startZoomLngLat","startBearing","startPitch","_getUpdatedState","_unproject","startPos","_interactiveState","_calculateNewLngLat","_viewportProps","_calculateNewPitchAndBearing","_calculateNewZoom","_zoomFromCenter","_panFromCenter","fromProps","MapController","centerY","startY","updateViewport","MapView","_getControllerProps","DEFAULT_LIGHT_COLOR","idCount","AmbientLight","intensity","DEFAULT_LIGHT_DIRECTION","DirectionalLight","_shadow","Effect","Pass","LayersPass","_drawLayers","onViewportActive","clearCanvas","clearGLCanvas","renderStats","viewportOrDescriptor","layerFilter","pass","effects","glViewport","dimensions","pixelRatio","getGLViewport","clearOpts","scissorTest","renderStatus","totalCount","visibleCount","compositeCount","pickableCount","shouldDrawLayer","_moduleParameters","layerIndex","layerParameters","isPicking","renderPass","effect","getModuleParameters","ShadowPass","drawToShadowMap","getMemoizedViewportCenterPosition","getMemoizedViewProjectionMatrices","shadowMatrices","projectionMatrices","farZ","corners","screenToCommonSpace","shadowMatrix","positions","corner","DEFAULT_SHADOW_COLOR","createShadowUniforms","shadow_uDrawShadowMap","shadow_uUseShadowMap","shadow_uColor","shadow_uLightId","shadow_uLightCount","projectCenters","viewProjectionMatrices","viewProjectionMatrixCentered","shadowUniforms","shadowEnabled","DEFAULT_AMBIENT_LIGHT_PROPS","DEFAULT_DIRECTIONAL_LIGHT_PROPS","LightingEffect","lightSource","light","shadowPasses","shadowPass","shadowLightId","dummyShadowMap","shadow","shadowMaps","shadowColor","ambientLight","directionalLights","directionalLight","pointLights","pointLight","lightMatrices","DEFAULT_LIGHTING_EFFECT","EffectManager","DrawLayersPass","PICKING_PARAMETERS","PickLayersPass","deviceRect","redrawReason","pickZ","lightSources","pickParameters","DeckRenderer","drawPickingColors","layerPass","outputBuffer","lastPostProcessEffect","renderBuffers","inputBuffer","swapBuffer","NO_PICKED_OBJECT","pickedColor","pickedLayer","pickedObjectIndex","getClosestObject","pickedColors","deviceX","deviceY","deviceRadius","minSquareDistanceToCenter","closestPixelIndex","dy2","pickedLayerIndex","pickedX","pickedY","processPickInfo","pickInfo","lastPickedInfo","affectedLayers","lastPickedObjectIndex","lastPickedLayerId","pickedLayerId","lastPickedLayer","coordinate","baseInfo","picked","devicePixel","infos","getLayerPickingInfo","sourceLayer","callLayerPickingCallbacks","unhandledPickInfos","DeckPicker","_pickClosestObject","_pickVisibleObjects","unproject3D","devicePixelRange","_getPickingRect","deviceWidth","deviceHeight","_drawAndSample","zValues","processedPickInfos","emptyInfo","leftTop","deviceLeft","deviceTop","rightBottom","deviceRight","deviceBottom","pickInfos","uniqueColors","colorKey","getUniqueObjects","uniqueInfos","pickableLayers","defaultStyle","Tooltip","canvasParent","displayInfo","mimeTypes","firstChar","parseTextSync","existingVersion","_registerLoggers","Query","hasTimerQuery","conservative","resultAvailable","getResult","poll","timerId","statIdCounter","AnimationLoop","onCreateContext","onAddHTML","onInitialize","onRender","onFinalize","glOptions","createFramebuffer","autoResizeViewport","autoResizeDrawingBuffer","_onMousemove","_onMouseleave","appContext","offScreen","waitForRender","toDataURL","_requestAnimationFrame","renderFrame","renderFrameCallback","tick","tock","_timeline","_loop","_animationLoop","_mousePosition","wrapperDiv","drawingBufferHeight","_gpuTimeQuery","oldHandler","predict","enhancePointerEventInput","hammerjs","enhanceMouseInput","RECOGNIZERS","RECOGNIZER_COMPATIBLE_MAP","doubletap","anytap","RECOGNIZER_FALLBACK_MAP","BASIC_EVENT_ALIASES","INPUT_EVENT_TYPES","EVENT_RECOGNIZER_MAP","tap","press","pinch","pinchin","pinchout","pinchstart","pinchmove","pinchend","pinchcancel","rotatestart","rotatemove","rotateend","rotatecancel","panup","pandown","panleft","panright","pancancel","swipe","swipeleft","swiperight","swipeup","swipedown","GESTURE_EVENT_ALIASES","anyclick","dblclick","mouseover","mouseout","mouseleave","firefox","WHEEL_EVENTS","WheelInput","wheelPosition","MOUSE_EVENTS","MoveInput","KEY_EVENTS","KeyInput","targetElement","enableDownEvent","enableUpEvent","ContextmenuInput","EventRegistrar","handlersByElement","mjolnirEvent","_normalizeEvent","immediatePropagationStopped","stopImmediatePropagation","entriesToRemove","rootElement","leftButton","middleButton","rightButton","whichButtons","getOffsetPosition","handled","DEFAULT_OPTIONS","recognizerOptions","EventManager","_onBasicInput","_onOtherEvent","ManagerClass","otherName","recognizerOption","eventAlias","eventRegistrar","fallbackRecognizers","recognizerName","isRecognizerUsed","alias","pickingRadius","_framebuffer","_animate","onWebGLInitialized","onResize","onLoad","_onMetrics","getCursor","Deck","_onEvent","_onPointerDown","_onPointerMove","_pickAndCallback","_onRendererInitialized","_onRenderFrame","_onInteractiveStateChange","_createCanvas","_createAnimationLoop","fps","setPropsTime","updateAttributesTime","framesRedrawn","pickTime","pickCount","gpuTime","gpuTimePerFrame","cpuTime","cpuTimePerFrame","bufferMemory","textureMemory","renderbufferMemory","gpuMemory","_getViews","_getViewState","viewManagerNeedsRedraw","viewManager","layerManagerNeedsRedraw","effectManagerNeedsRedraw","effectManager","deckRendererNeedsRedraw","deckRenderer","getViewports","_pick","statKey","deckPicker","getLayers","_pickRequest","pickedInfo","getTooltip","polygonOffsetFill","pointerleave","renderOptions","getEffects","_metricsCounter","interactiveState","eventOptions","getLastPickedObject","layerHandler","rootHandler","pickObject","animationLoopStats","animationLoop","metrics","memoryStats","inheritsFrom","ParentType","wrapInView","extractJSXLayers","reactChildren","jsxLayers","jsxViews","reactElement","ElementType","reactProps","createLayer","deckGlobal","MAP_STYLE","evaluateChildren","childProps","componentProps","isReactMap","needsDeckGLViewProps","positionChildrenUnderViews","ContextProvider","defaultViewId","viewChildren","contextValue","DeckGL","DeckClass","_containerRef","_canvasRef","_customRender","childrenChanged","_parseJSX","viewsChanged","pickMultipleObjects","pickObjects","_extractJSXLayers","deckProps","_positionChildrenUnderViews","CompositeLayer","overridingProps","DefaultLayerClass","sourceObject","sourceObjectIndex","sublayerProps","overridingSublayerProps","overridingSublayerTriggers","sublayerId","getSubLayerAccessor","passThroughProps","subLayers","getImageType","getImageTypeOrNull","getImageSize","generateUrl","getUrl","urlOptions","baseUrl","mapSubtree","mapArray","mapObject","promises","urlArray","asyncDeepMap","urlTree","shallowLoad","getImageUrls","imageUrls","deepLoad","mipLevels","getMipmappedImageUrls","urls","lod","getMipLevels","mipLevel","DEFAULT_TEXTURE_PARAMETERS","getIconId","icon","buildRowMapping","mapping","IconManager","_texture","_autoPacking","_mapping","autoPacking","iconAtlas","iconMapping","getIcon","_canvas","icons","cachedIcons","getDiffIcons","rowHeight","buildMapping","_yOffset","oldWidth","oldHeight","newTexture","resizeTexture","naturalWidth","resizeImage","DEFAULT_COLOR","sizeScale","billboard","sizeUnits","sizeMinPixels","sizeMaxPixels","alphaCutoff","IconLayer","project32","iconManager","instancePositions","fp64","instanceSizes","instanceOffsets","getInstanceOffset","instanceIconFrames","getInstanceIconFrame","instanceColorModes","getInstanceColorMode","instanceColors","instanceAngles","iconMappingChanged","isAsyncPropLoading","_getModel","iconsTexture","iconsTextureDim","getIconMapping","MultiIconLayer","calculateInstanceOffsets","instancePixelOffset","sdf","shouldDrawBackground","getAnchorX","getAnchorY","getParagraphSize","getRowSize","getOffsets","rowWidth","anchorX","anchorY","rowOffset","getPickingIndex","getPixelOffset","getTextWidth","character","frameWidth","frame","breakAll","rows","rowStartCharIndex","rowOffsetLeft","textWidth","lastRowStartCharIndex","lastRowOffsetLeft","autoWrapping","wordBreak","groupStartCharIndex","groupWidth","lastGroupStartIndex","subGroups","breakWord","transformRow","rowOffsetTop","offsetLeft","characters","transformParagraph","transformedData","autoWrappingEnabled","paragraph","rowSize","transformCharacter","LRUCache","_order","DEFAULT_CHAR_SET","charSet","getDefaultCharacterSet","VALID_PROPS","getNewChars","characterSet","cachedFontAtlas","newChars","cachedMapping","cachedCharSet","populateAlphaChannel","setTextStyle","FontAtlasManager","oldKey","fontAtlas","_generateFontAtlas","getFontWidth","fontHeight","maxCanvasWidth","tinySDF","DEFAULT_FONT_SETTINGS","TEXT_ANCHOR","ALIGNMENT_BASELINE","FONT_SETTINGS_PROPS","fontSettings","getText","getTextAnchor","getAlignmentBaseline","TextLayer","fontAtlasManager","fontChanged","styleChanged","textChanged","dataDiff","replaceStart","replaceEnd","dataLengthChanged","endChunk","replaceInRange","oldFontSettings","transformed","getSubLayerClass","getAnchorXFromTextAnchor","getAnchorYFromAlignmentBaseline","getSubLayerProps","UNIFORM_SETTERS","getArraySetter","FLOAT_ARRAY","INT_ARRAY","UINT_ARRAY","toTypedArray","uniformLength","toFloatArray","toIntArray","toUIntArray","parseUniformName","getUniformSetter","checkUniformValues","uniformMap","checkUniformValue","checkLength","checkUniformArray","copyUniform","getSamplerSetter","uniformSetter","cacheLength","setVectorUniform","setMatrixUniform","defaultName","SHADER_NAME_REGEXP","parseGLSLCompilerError","errLog","shaderType","shaderName","errorStrings","warnings","shaderDescription","getShaderTypeName","errorString","segments","delim","maxDigits","padLeft","addLineNumbers","formatErrors","Shader","getShaderParameter","getShaderSource","compileStatus","infoLog","getShaderInfoLog","getSource","VertexShader","createShader","FragmentShader","ProgramConfiguration","attributeInfosByLocation","attributeInfosByName","varyingInfos","varyingInfosByName","compositeType","V6_DEPRECATED_METHODS","Program","samplers","_uniformSetters","textureUpdate","textureIndex","_textureUniforms","_texturesRenderable","shaderHandles","getAttachedShaders","shaderHandle","programName","getName","getActiveUniform","uniformIndices","getActiveUniforms","blockName","getUniformBlockIndex","blockIndex","getActiveUniformBlockParameter","blockBinding","radiusScale","radiusMinPixels","radiusMaxPixels","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","stroked","filled","getRadius","getFillColor","getLineColor","getLineWidth","deprecatedFor","ScatterplotLayer","instanceRadius","instanceFillColors","instanceLineColors","instanceLineWidths","widthMultiplier","getSourcePosition","getTargetPosition","getWidth","widthUnits","widthMinPixels","widthMaxPixels","LineLayer","instanceSourcePositions","instanceTargetPositions","instanceWidths"],"mappings":"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,QAAS,aACR,CACDr6J,KAAM,IACNq6J,QAAS,yQACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,IACNq6J,QAAS,mEACR,CACDr6J,KAAM,IACNq6J,QAAS,2CACR,CACDr6J,KAAM,IACNq6J,QAAS,6GACR,CACDr6J,KAAM,IACNq6J,QAAS,6GACR,CACDr6J,KAAM,IACNq6J,QAAS,iGACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,IACNq6J,QAAS,mNACR,CACDr6J,KAAM,IACNq6J,QAAS,uDACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,IACNq6J,QAAS,mEACR,CACDr6J,KAAM,IACNq6J,QAAS,qCACR,CACDr6J,KAAM,IACNq6J,QAAS,iGACR,CACDr6J,KAAM,IACNq6J,QAAS,2FACR,CACDr6J,KAAM,IACNq6J,QAAS,yNACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,KACNq6J,QAAS,yBACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,KACNq6J,QAAS,mBACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,IACNq6J,QAAS,6DACR,CACDr6J,KAAM,IACNq6J,QAAS,qFACR,CACDr6J,KAAM,IACNq6J,QAAS,2FACR,CACDr6J,KAAM,KACNq6J,QAAS,mBACR,CACDr6J,KAAM,IACNq6J,QAAS,iMACR,CACDr6J,KAAM,IACNq6J,QAAS,2CACR,CACDr6J,KAAM,IACNq6J,QAAS,iGACR,CACDr6J,KAAM,IACNq6J,QAAS,iGACR,CACDr6J,KAAM,KACNq6J,QAAS,aACR,CACDr6J,KAAM,IACNq6J,QAAS,+HACR,CACDr6J,KAAM,IACNq6J,QAAS,2CACR,CACDr6J,KAAM,IACNq6J,QAAS,2FACR,CACDr6J,KAAM,IACNq6J,QAAS,yHACR,CACDr6J,KAAM,KA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A,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINj5B,IAAK,CACHxT,IAAK,EACLysC,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEA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","file":"static/js/2.99918952.chunk.js","sourcesContent":["export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","module.exports = require(\"regenerator-runtime\");\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/* eslint-disable quotes */\n/* global document, WebGL2RenderingContext */\n// WebGLRenderingContext related methods\nimport GL from '@luma.gl/constants';\nimport {global, isBrowser as getIsBrowser} from 'probe.gl/env';\nimport trackContextState from '../state-tracker/track-context-state';\n\nimport {log, assert, getDevicePixelRatio, isWebGL2} from '../utils';\n\nexport const ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nconst isBrowser = getIsBrowser();\nconst isPage = isBrowser && typeof document !== 'undefined';\n\nconst CONTEXT_DEFAULTS = {\n // COMMON CONTEXT PARAMETERS\n // Attempt to allocate WebGL2 context\n webgl2: true, // Attempt to create a WebGL2 context (false to force webgl1)\n webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)\n throwOnError: false,\n manageState: true,\n // BROWSER CONTEXT PARAMETERS\n canvas: null, // A canvas element or a canvas string id\n debug: false, // Instrument context (at the expense of performance)\n // HEADLESS CONTEXT PARAMETERS\n width: 800, // width are height are only used by headless gl\n height: 600\n // WEBGL/HEADLESS CONTEXT PARAMETERS\n // Remaining options are passed through to context creator\n};\n\n/*\n * Creates a context giving access to the WebGL API\n */\n/* eslint-disable complexity, max-statements */\nexport function createGLContext(options = {}) {\n assert(\n isBrowser,\n \"createGLContext on available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\"\n );\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {width, height} = options;\n\n // Error reporting function, enables exceptions to be disabled\n function onError(message) {\n if (options.throwOnError) {\n throw new Error(message);\n }\n return null;\n }\n\n let gl;\n // Get or create a canvas\n const {canvas} = options;\n const targetCanvas = getCanvas({canvas, width, height, onError});\n // Create a WebGL context in the canvas\n gl = createBrowserContext(targetCanvas, options);\n\n if (!gl) {\n return null;\n }\n\n gl = instrumentGLContext(gl, options);\n\n // Log some debug info about the newly created context\n logInfo(gl);\n\n // Add to seer integration\n return gl;\n}\n\nexport function instrumentGLContext(gl, options = {}) {\n // Avoid multiple instrumentations\n if (!gl || gl._instrumented) {\n return gl;\n }\n\n gl._version = gl._version || getVersion(gl);\n\n // Cache canvas size information to avoid setting it on every frame.\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {manageState, debug} = options;\n\n // Install context state tracking\n if (manageState) {\n trackContextState(gl, {\n copyState: false,\n log: (...args) => log.log(1, ...args)()\n });\n }\n\n // Add debug instrumentation to the context\n if (isBrowser && debug) {\n if (!global.makeDebugContext) {\n log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n } else {\n gl = global.makeDebugContext(gl, options);\n // Debug forces log level to at least 1\n log.level = Math.max(log.level, 1);\n }\n }\n\n gl._instrumented = true;\n\n return gl;\n}\n\n/**\n * Provides strings identifying the GPU vendor and driver.\n * https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/\n * @param {WebGLRenderingContext} gl - context\n * @return {Object} - 'vendor' and 'renderer' string fields.\n */\nexport function getContextDebugInfo(gl) {\n const vendorMasked = gl.getParameter(GL.VENDOR);\n const rendererMasked = gl.getParameter(GL.RENDERER);\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || GL.VENDOR);\n const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || GL.RENDERER);\n return {\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n vendorMasked,\n rendererMasked,\n version: gl.getParameter(GL.VERSION),\n shadingLanguageVersion: gl.getParameter(GL.SHADING_LANGUAGE_VERSION)\n };\n}\n\n/**\n * Resize the canvas' drawing buffer.\n *\n * Can match the canvas CSS size, and optionally also consider devicePixelRatio\n * Can be called every frame\n *\n * Regardless of size, the drawing buffer will always be scaled to the viewport, but\n * for best visual results, usually set to either:\n * canvas CSS width x canvas CSS height\n * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio\n * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n *\n * resizeGLContext(gl, {width, height, useDevicePixels})\n */\nexport function resizeGLContext(gl, options = {}) {\n // Resize browser context\n if (gl.canvas) {\n const devicePixelRatio = getDevicePixelRatio(options.useDevicePixels);\n setDevicePixelRatio(gl, devicePixelRatio, options);\n return;\n }\n\n // Resize headless gl context\n const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n if (ext && `width` in options && `height` in options) {\n ext.resize(options.width, options.height);\n }\n}\n\n// HELPER METHODS\n\n/**\n * Create a WebGL context for a canvas\n * Note calling this multiple time on the same canvas does return the same context\n */\n\nfunction createBrowserContext(canvas, options) {\n const {onError = message => null} = options;\n\n // Try to extract any extra information about why context creation failed\n const onCreateError = error => onError(`WebGL context: ${error.statusMessage || 'error'}`);\n canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n\n const {webgl1 = true, webgl2 = true} = options;\n let gl = null;\n // Prefer webgl2 over webgl1, prefer conformant over experimental\n if (webgl2) {\n gl = gl || canvas.getContext('webgl2', options);\n gl = gl || canvas.getContext('experimental-webgl2', options);\n }\n if (webgl1) {\n gl = gl || canvas.getContext('webgl', options);\n gl = gl || canvas.getContext('experimental-webgl', options);\n }\n\n canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n if (!gl) {\n return onError(`Failed to create ${webgl2 && !webgl1 ? 'WebGL2' : 'WebGL'} context`);\n }\n\n return gl;\n}\n\nfunction getCanvas({canvas, width = 800, height = 600, onError = () => {}}) {\n let targetCanvas;\n if (typeof canvas === 'string') {\n const isPageLoaded = isPage && document.readyState === 'complete';\n if (!isPageLoaded) {\n onError(`createGLContext called on canvas '${canvas}' before page was loaded`);\n }\n targetCanvas = document.getElementById(canvas);\n } else if (canvas) {\n targetCanvas = canvas;\n } else {\n targetCanvas = document.createElement('canvas');\n targetCanvas.id = 'lumagl-canvas';\n targetCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';\n targetCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';\n document.body.insertBefore(targetCanvas, document.body.firstChild);\n }\n\n return targetCanvas;\n}\n\nfunction logInfo(gl) {\n const webGL = isWebGL2(gl) ? 'WebGL2' : 'WebGL1';\n const info = getContextDebugInfo(gl);\n const driver = info ? `(${info.vendor},${info.renderer})` : '';\n const debug = gl.debug ? ' debug' : '';\n log.info(1, `${webGL}${debug} context ${driver}`)();\n}\n\nfunction getVersion(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n // WebGL2 context.\n return 2;\n }\n // Must be a WebGL1 context.\n return 1;\n}\n\n// use devicePixelRatio to set canvas width and height\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n // NOTE: if options.width and options.height not used remove in v8\n let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n if (!clientWidth || !clientHeight) {\n log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n // by forcing devicePixel ratio to 1, we do not scale gl.canvas.width and height in each frame.\n devicePixelRatio = 1;\n clientWidth = gl.canvas.width || 1;\n clientHeight = gl.canvas.height || 1;\n }\n\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n const cachedSize = gl.luma.canvasSizeInfo;\n // Check if canvas needs to be resized\n if (\n cachedSize.clientWidth !== clientWidth ||\n cachedSize.clientHeight !== clientHeight ||\n cachedSize.devicePixelRatio !== devicePixelRatio\n ) {\n let clampedPixelRatio = devicePixelRatio;\n\n const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n gl.canvas.width = canvasWidth;\n gl.canvas.height = canvasHeight;\n\n // Note: when devicePixelRatio is too high, it is possible we might hit system limit for\n // drawing buffer width and hight, in those cases they get clamped and resulting aspect ration may not be maintained\n // for those cases, reduce devicePixelRatio.\n if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n log.warn(`Device pixel ratio clamped`)();\n clampedPixelRatio = Math.min(\n gl.drawingBufferWidth / clientWidth,\n gl.drawingBufferHeight / clientHeight\n );\n\n gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n }\n\n Object.assign(gl.luma.canvasSizeInfo, {clientWidth, clientHeight, devicePixelRatio});\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport {default as EventManager} from './event-manager';\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","module.exports = require(\"regenerator-runtime\");\n","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Type} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import assert from './assert';\n\nconst uidCounters = {};\n\n/**\n * Returns a UID.\n * @param {String} id= - Identifier base name\n * @return {number} uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n\n/**\n * Verifies if a given number is power of two or not.\n * @param {object} n - The number to check.\n * @return {Array} Returns true if the given number is power of 2, false otherwise.\n **/\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & (n - 1)) === 0;\n}\n\n// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n /* eslint-disable no-unused-vars */\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n /* eslint-enable no-unused-vars */\n return isEmpty;\n}\n","/* global window */\n\n// multiplier need to convert CSS size to Device size\nexport function cssToDeviceRatio(gl) {\n if (gl.canvas && gl.luma) {\n // For headless gl we might have used custom width and height\n // hence use cached clientWidth\n const {clientWidth} = gl.luma.canvasSizeInfo;\n return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n }\n // use default device pixel ratio\n return 1;\n}\n\n// Maps CSS pixel position to device pixel position\nexport function cssToDevicePixels(gl, cssPixel, yInvert = true) {\n const ratio = cssToDeviceRatio(gl);\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\n\n// HELPER METHODS\n\n/**\n * Calulates device pixel ratio, used during context creation\n *\n * @param {boolean or Number} useDevicePixels - boolean or a Number\n * @return {Number} - device pixel ratio\n */\nexport function getDevicePixelRatio(useDevicePixels) {\n const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n if (Number.isFinite(useDevicePixels)) {\n return useDevicePixels <= 0 ? 1 : useDevicePixels;\n }\n return useDevicePixels ? windowRatio : 1;\n}\n\n// PRIVATE\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n const x = scaleX(pixel[0], ratio, width);\n let y = scaleY(pixel[1], ratio, height, yInvert);\n\n // Find boundaries of next pixel to provide valid range of device pixel locaitons\n\n let t = scaleX(pixel[0] + 1, ratio, width);\n // If next pixel's position is clamped to boundary, use it as is, otherwise subtract 1 for current pixel boundary\n const xHigh = t === width - 1 ? t : t - 1;\n\n t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n let yHigh;\n if (yInvert) {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n t = t === 0 ? t : t + 1;\n // swap y and yHigh\n yHigh = y;\n y = t;\n } else {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n yHigh = t === height - 1 ? t : t - 1;\n // y remains same\n }\n return {\n x,\n y,\n // when ratio < 1, current css pixel and next css pixel may point to same device pixel, set width/height to 1 in those cases.\n width: Math.max(xHigh - x + 1, 1),\n height: Math.max(yHigh - y + 1, 1)\n };\n}\n\nfunction scaleX(x, ratio, width) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n const r = Math.min(Math.round(x * ratio), width - 1);\n return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n return yInvert\n ? Math.max(0, height - 1 - Math.round(y * ratio))\n : Math.min(Math.round(y * ratio), height - 1);\n}\n","import {assert} from './utils';\n\n// Heuristic testing of contexts (to indentify debug wrappers around gl contexts)\n// const GL_ARRAY_BUFFER = 0x8892;\n\nexport const ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nexport function isWebGL(gl) {\n return Boolean(gl && Number.isFinite(gl._version));\n}\n\nexport function isWebGL2(gl) {\n return Boolean(gl && gl._version === 2);\n}\n\nexport function assertWebGLContext(gl) {\n // Need to handle debug context\n assert(isWebGL(gl), ERR_CONTEXT);\n}\n\nexport function assertWebGL2Context(gl) {\n // Need to handle debug context\n assert(isWebGL2(gl), ERR_WEBGL2);\n}\n","import {Log} from 'probe.gl';\n\nexport {assert, deepArrayEqual, isObjectEmpty} from './utils';\nexport {cssToDevicePixels, cssToDeviceRatio, getDevicePixelRatio} from './device-pixels';\nexport {isWebGL, isWebGL2} from './webgl-checks';\n\nexport const log = new Log({id: 'luma.gl'});\n","export default function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import {Log} from 'probe.gl';\n\nexport default new Log({id: 'deck'});\n","import {ConsoleLog} from './loader-utils/loggers';\n\n// TODO - document these options\nexport const DEFAULT_LOADER_OPTIONS = {\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n dataType: 'arraybuffer' // TODO - explain why this option is needed for parsing\n};\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {mat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {mat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to translate\r\n * @param {vec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {vec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {quat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @param {vec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n;\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {mat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' + a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {mat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport assert from './assert';\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\n/* eslint-disable no-shadow */\nconst config = {};\nconfig.EPSILON = 1e-12;\nconfig.debug = false;\nconfig.precision = 4;\nconfig.printTypes = false;\nconfig.printDegrees = false;\nconfig.printRowMajor = true;\n\nexport {config};\n\nexport function configure(options = {}) {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\nexport function formatValue(value, {precision = config.precision || 4} = {}) {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n// Returns true if value is either an array or a typed array\n// Note: does not return true for ArrayBuffers and DataViews\nexport function isArray(value) {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && value.length !== undefined);\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array) {\n return array.clone ? array.clone() : new Array(array.length);\n}\n\nexport function clone(array) {\n return array.clone ? array.clone() : new Array(...array);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value, func, result) {\n if (isArray(value)) {\n result = result || duplicateArray(value);\n for (let i = 0; i < result.length && i < value.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value);\n}\n\nexport function toRadians(degrees) {\n return radians(degrees);\n}\n\nexport function toDegrees(radians) {\n return degrees(radians);\n}\n\n//\n// GLSL math function equivalents\n// Works on both single values and vectors\n//\n\nexport function radians(degrees, result) {\n return map(degrees, degrees => degrees * DEGREES_TO_RADIANS, result);\n}\n\nexport function degrees(radians, result) {\n return map(radians, radians => radians * RADIANS_TO_DEGREES, result);\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function sin(radians) {\n return map(radians, angle => Math.sin(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function cos(radians) {\n return map(radians, angle => Math.cos(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function tan(radians) {\n return map(radians, angle => Math.tan(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function asin(radians) {\n return map(radians, angle => Math.asin(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function acos(radians) {\n return map(radians, angle => Math.acos(angle));\n}\n\n// GLSL equivalent: Works on single values and vectors\nexport function atan(radians) {\n return map(radians, angle => Math.atan(angle));\n}\n\nexport function clamp(value, min, max) {\n return map(value, value => Math.max(min, Math.min(max, value)));\n}\n\n// Interpolate between two numbers or two arrays\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n\n// eslint-disable-next-line complexity\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (Number.isFinite(a) && Number.isFinite(b)) {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\n// eslint-disable-next-line complexity\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function withEpsilon(EPSILON, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = EPSILON;\n let value;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import * as vec4 from 'gl-matrix/vec4';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n// Transforms a vec4 with a projection matrix\nexport function transformVector(matrix, vector) {\n const result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\n\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\n\nimport {createMat4, transformVector} from './math-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\n\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n\n// Mapbox default altitude\nconst DEFAULT_ALTITUDE = 1.5;\n\n/** Util functions **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n\nexport function scaleToZoom(scale) {\n return Math.log2(scale);\n}\n\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\nexport function lngLatToWorld([lng, lat]) {\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat([x, y]) {\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n\n// Returns the zoom level that gives a 1 meter pixel at a certain latitude\n// 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\nexport function getMeterZoom({latitude}) {\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\n\nexport function getDistanceScales({latitude, longitude, highPrecision = false}) {\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n\n const result = {};\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];\n result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];\n\n result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];\n result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];\n\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n\n const {unitsPerMeter, unitsPerMeter2} = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n\n// ATTRIBUTION:\n// view and projection matrix creation is intentionally kept compatible with\n// mapbox-gl's implementation to ensure that seamless interoperation\n// with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n\nexport function getViewMatrix({\n // Viewport props\n height,\n pitch,\n bearing,\n altitude,\n // Pre-calculated parameters\n scale,\n center = null\n}) {\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n scale /= height;\n mat4.scale(vm, vm, [scale, scale, scale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\n\n// PROJECTION MATRIX PARAMETERS\n// Variable fov (in radians)\nexport function getProjectionParameters({\n width,\n height,\n altitude = DEFAULT_ALTITUDE,\n pitch = 0,\n nearZMultiplier = 1,\n farZMultiplier = 1\n}) {\n // Find the distance from the center point to the center top\n // in altitude units using law of sines.\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n const halfFov = Math.atan(0.5 / altitude);\n const topHalfSurfaceDistance =\n (Math.sin(halfFov) * altitude) / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\n\n// PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n// To match mapbox's z buffer:\n// <= 0.28 - nearZMultiplier: 0.1, farZmultiplier: 1\n// >= 0.29 - nearZMultiplier: 1 / height, farZMultiplier: 1.01\nexport function getProjectionMatrix({\n width,\n height,\n pitch,\n altitude,\n nearZMultiplier,\n farZMultiplier\n}) {\n const {fov, aspect, near, far} = getProjectionParameters({\n width,\n height,\n altitude,\n pitch,\n nearZMultiplier,\n farZMultiplier\n });\n\n const projectionMatrix = mat4.perspective(\n [],\n fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n\n return projectionMatrix;\n}\n\n/**\n * Project flat coordinates to pixels on screen.\n *\n * @param {Array} xyz - flat coordinate on 512*512 Mercator Zoom 0 tile\n * @param {Matrix4} pixelProjectionMatrix - projection matrix\n * @return {Array} [x, y, depth] pixel coordinate on screen.\n */\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param {Array} xyz - pixel coordinate on screen.\n * @param {Matrix4} pixelUnprojectionMatrix - unprojection matrix\n * @param {Number} targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return {Array} [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n\n const z0 = coord0[2];\n const z1 = coord1[2];\n\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n","// View and Projection Matrix management\n\nimport {createMat4} from './math-utils';\nimport {worldToPixels, pixelsToWorld} from './web-mercator-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\n\nconst IDENTITY = createMat4();\n\nexport default class Viewport {\n /**\n * @classdesc\n * Manages coordinate system transformations for deck.gl.\n *\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n *\n * @class\n * @param {Object} opt - options\n * @param {Boolean} mercator=true - Whether to use mercator projection\n *\n * @param {Number} opt.width=1 - Width of \"viewport\" or window\n * @param {Number} opt.height=1 - Height of \"viewport\" or window\n * @param {Array} opt.center=[0, 0] - Center of viewport\n * [longitude, latitude] or [x, y]\n * @param {Number} opt.scale=1 - Either use scale or zoom\n * @param {Number} opt.pitch=0 - Camera angle in degrees (0 is straight down)\n * @param {Number} opt.bearing=0 - Map rotation in degrees (0 means north is up)\n * @param {Number} opt.altitude= - Altitude of camera in screen units\n *\n * Web mercator projection short-hand parameters\n * @param {Number} opt.latitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.longitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.zoom - Scale = Math.pow(2,zoom) on map (alternative to opt.scale)\n */\n // eslint-disable-next-line complexity, max-statements\n constructor({\n // Window width/height in pixels (for pixel projection)\n width,\n height,\n scale,\n // Desc\n viewMatrix = IDENTITY,\n projectionMatrix = IDENTITY\n } = {}) {\n // Silently allow apps to send in 0,0\n this.width = width || 1;\n this.height = height || 1;\n this.scale = scale;\n this.unitsPerMeter = 1;\n\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // Calculate matrices and scales needed for projection\n /**\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n const m = createMat4();\n\n // matrix for conversion from location to screen coordinates\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n\n mat4.multiply(m, m, this.viewProjectionMatrix);\n\n const mInverse = mat4.invert(createMat4(), m);\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n /* eslint-enable complexity */\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n mat4.equals(viewport.projectionMatrix, this.projectionMatrix) &&\n mat4.equals(viewport.viewMatrix, this.viewMatrix)\n );\n }\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param {Array} lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @return {Array} - screen coordinates [x, y] or [x, y, z], z as pixel depth\n */\n project(xyz, {topLeft = true} = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz - screen coordinates, z as pixel depth\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @param {Object} opts.targetZ=0 - If pixel depth is unknown, targetZ is used as\n * the elevation plane to unproject onto\n * @return {Array} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(xyz, {topLeft = true, targetZ} = {}) {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.unitsPerMeter;\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz) {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.unitsPerMeter;\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / this.unitsPerMeter;\n return [X, Y, Z];\n }\n\n /**\n * Project map coordinates to world coordinates.\n * This should be overridden by each viewport that implements a specific\n * geographic projection.\n * @param {Array} xyz - map coordinates\n * @return {Array} [x,y,z] world coordinates.\n */\n projectFlat(xyz, scale = this.scale) {\n return xyz;\n }\n\n /**\n * Project world coordinates to map coordinates.\n * This should be overridden by each viewport that implements a specific\n * geographic projection.\n * @param {Array} xyz - world coordinates\n * @return {Array} [x,y,z] map coordinates.\n */\n unprojectFlat(xyz, scale = this.scale) {\n return xyz;\n }\n}\n","import WebMercatorViewport from './web-mercator-viewport';\nimport assert from './assert';\n\n/**\n * * An object describing the padding to add to the bounds.\n * @typedef {Object} PaddingObject\n * @property {Number} top - Padding from top in pixels to add to the given bounds\n * @property {Number} bottom - Padding from bottom in pixels to add to the given bounds\n * @property {Number} left - Padding from left in pixels to add to the given bounds\n * @property {Number} right - Padding from right in pixels to add to the given bounds\n */\n\n/**\n * Returns map settings {latitude, longitude, zoom}\n * that will contain the provided corners within the provided width.\n * Only supports non-perspective mode.\n * @param {Number} width - viewport width\n * @param {Number} height - viewport height\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Array} minExtent - The width/height of the bounded area will never be smaller than this\n * @param {Number|PaddingObject} [padding] - The amount of padding in pixels\n * to add to the given bounds. Can also be an object with top, bottom, left and right\n * properties defining the padding.\n * @param {Array} [offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {Object} - latitude, longitude and zoom\n */\nexport default function fitBounds({\n width,\n height,\n bounds,\n minExtent = 0, // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom = 24, // ~x4,000,000 => About 10 meter extents\n // options\n padding = 0,\n offset = [0, 0]\n}) {\n const [[west, south], [east, north]] = bounds;\n\n if (Number.isFinite(padding)) {\n const p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n // Make sure all the required properties are set\n assert(\n Number.isFinite(padding.top) &&\n Number.isFinite(padding.bottom) &&\n Number.isFinite(padding.left) &&\n Number.isFinite(padding.right)\n );\n }\n\n const viewport = new WebMercatorViewport({\n width,\n height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n\n const nw = viewport.project([west, north]);\n const se = viewport.project([east, south]);\n\n // width/height on the Web Mercator plane\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n\n // scale = screen pixels per unit on the Web Mercator plane\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n\n // Find how much we need to shift the center\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n\n const centerLngLat = viewport.unproject(center);\n const zoom = Math.min(maxZoom, viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY))));\n\n assert(Number.isFinite(zoom));\n\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n","// View and Projection Matrix calculations for mapbox-js style map view properties\nimport Viewport from './viewport';\n\nimport {\n zoomToScale,\n pixelsToWorld,\n lngLatToWorld,\n worldToLngLat,\n getProjectionMatrix,\n getDistanceScales,\n getViewMatrix\n} from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\n\nimport * as vec2 from 'gl-matrix/vec2';\n\nexport default class WebMercatorViewport extends Viewport {\n /**\n * @classdesc\n * Creates view/projection matrices from mercator params\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n *\n * @class\n * @param {Object} opt - options\n *\n * @param {Number} opt.width=1 - Width of \"viewport\" or window\n * @param {Number} opt.height=1 - Height of \"viewport\" or window\n * @param {Number} opt.scale=1 - Either use scale or zoom\n * @param {Number} opt.pitch=0 - Camera angle in degrees (0 is straight down)\n * @param {Number} opt.bearing=0 - Map rotation in degrees (0 means north is up)\n * @param {Number} opt.altitude= - Altitude of camera in screen units\n *\n * Web mercator projection short-hand parameters\n * @param {Number} opt.latitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.longitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.zoom - Scale = Math.pow(2,zoom) on map (alternative to opt.scale)\n\n * Notes:\n * - Only one of center or [latitude, longitude] can be specified\n * - [latitude, longitude] can only be specified when \"mercator\" is true\n * - Altitude has a default value that matches assumptions in mapbox-gl\n * - width and height are forced to 1 if supplied as 0, to avoid\n * division by zero. This is intended to reduce the burden of apps to\n * to check values before instantiating a Viewport.\n */\n /* eslint-disable complexity */\n constructor({\n // Map state\n width,\n height,\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n altitude = 1.5,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = {}) {\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n const scale = zoomToScale(zoom);\n // Altitude - prevent division by 0\n // TODO - just throw an Error instead?\n altitude = Math.max(0.75, altitude);\n\n const center = lngLatToWorld([longitude, latitude]);\n center[2] = 0;\n\n const projectionMatrix = getProjectionMatrix({\n width,\n height,\n pitch,\n bearing,\n altitude,\n nearZMultiplier,\n farZMultiplier\n });\n\n const viewMatrix = getViewMatrix({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n\n super({width, height, scale, viewMatrix, projectionMatrix});\n\n // Save parameters\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n\n this.center = center;\n this.unitsPerMeter = getDistanceScales(this).unitsPerMeter[2];\n\n Object.freeze(this);\n }\n /* eslint-enable complexity */\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\n projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n\n /**\n * Get the map center that place a given [lng, lat] coordinate at screen\n * point [x, y]\n *\n * @param {Array} lngLat - [lng,lat] coordinates\n * Specifies a point on the sphere.\n * @param {Array} pos - [x,y] coordinates\n * Specifies a point on the screen.\n * @return {Array} [lng,lat] new map center.\n */\n getMapCenterByLngLatPosition({lngLat, pos}) {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = lngLatToWorld(lngLat);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n return worldToLngLat(newCenter, this.scale);\n }\n\n // Legacy method name\n getLocationAtPoint({lngLat, pos}) {\n return this.getMapCenterByLngLatPosition({lngLat, pos});\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Number} [options.padding] - The amount of padding in pixels to add to the given bounds.\n * @param {Array} [options.offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {WebMercatorViewport}\n */\n fitBounds(bounds, options = {}) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds(Object.assign({width, height, bounds}, options));\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n}\n","import WebMercatorViewport from './web-mercator-viewport';\nimport {mod} from './math-utils';\n\n// defined by mapbox-gl\nconst MAX_LATITUDE = 85.05113;\nconst MIN_LATITUDE = -85.05113;\n\n// Apply mathematical constraints to viewport props\n/* eslint-disable complexity */\nexport default function normalizeViewportProps({\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch = 0,\n bearing = 0\n}) {\n // Normalize degrees\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n // Constrain zoom and shift center at low zoom levels\n let flatViewport = new WebMercatorViewport({width, height, longitude, latitude, zoom});\n let topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n let bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n let shiftY = 0;\n\n if (bottomY - topY < height) {\n // Map height must not be smaller than viewport height\n // Zoom out map to fit map height into viewport\n zoom += Math.log2(height / (bottomY - topY));\n\n // Calculate top and bottom using new zoom\n flatViewport = new WebMercatorViewport({width, height, longitude, latitude, zoom});\n topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n }\n if (topY > 0) {\n // Compensate for white gap on top\n shiftY = topY;\n } else if (bottomY < height) {\n // Compensate for white gap on bottom\n shiftY = bottomY - height;\n }\n if (shiftY) {\n latitude = flatViewport.unproject([width / 2, height / 2 + shiftY])[1];\n }\n\n return {width, height, longitude, latitude, zoom, pitch, bearing};\n}\n","import {lerp} from './math-utils';\nimport {scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n // screenSpeed and maxDuration are used only if specified\n};\n\n/**\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.” algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default function flyToViewport(startProps, endProps, t, opts = {}) {\n // Equations from above paper are referred where needed.\n\n const viewport = {};\n\n const {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0} = getFlyToTransitionParams(\n startProps,\n endProps,\n opts\n );\n\n // If change in center is too small, do linear interpolaiton.\n if (u1 < EPSILON) {\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n return viewport;\n }\n\n const s = t * S;\n\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = (w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2)) / u1;\n\n const scaleIncrement = 1 / w; // Using w method for scaling.\n const newZoom = startZoom + scaleToZoom(scaleIncrement);\n\n const newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n\n const newCenter = worldToLngLat(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\n\n// returns transition duration in milliseconds\nexport function getFlyToDuration(startProps, endProps, opts = {}) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const {screenSpeed, speed, maxDuration} = opts;\n const {S, rho} = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\n// Private Methods\n\n// Calculate all parameters that are static for given startProps and endProps\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = zoomToScale(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = zoomToScale(endZoom - startZoom);\n\n const startCenterXY = lngLatToWorld(startCenter);\n const endCenterXY = lngLatToWorld(endCenter);\n const uDelta = vec2.sub([], endCenterXY, startCenterXY);\n\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = vec2.length(uDelta) * startScale;\n // u0 is treated as '0' in Eq (9).\n\n // If u1 is too small, will generate invalid number\n const _u1 = Math.max(u1, EPSILON);\n\n // Implement Equation (9) from above algorithm.\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n\n return {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0, r1};\n}\n","// This file enables: import 'probe.gl/bench'.\n// Note: Must be published using package.json \"files\" field\nmodule.exports = require('./dist/es5/env');\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config} from './common';\n\nexport function validateVector(v, length) {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value) {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value;\n}\n\nexport function checkVector(v, length, callerName) {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName | ''} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method, version) {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n","import deckLog from '../utils/log';\nimport {getLoggers} from './loggers';\n\n/* debug utility */\n\nlet loggers = {};\n\n// Conditionally load default loggers in development mode\n// eslint-disable-next-line\nif (process.env.NODE_ENV !== 'production') {\n loggers = getLoggers(deckLog);\n}\n\nexport function register(handlers) {\n loggers = handlers;\n}\n\nexport default function debug(eventType) {\n if (deckLog.level > 0 && loggers[eventType]) {\n // Not using ...args to defeat perf hit from array construction\n loggers[eventType].call(...arguments);\n }\n}\n","export const LIFECYCLE = {\n NO_STATE: 'Awaiting state',\n MATCHED: 'Matched. State transferred from previous layer',\n INITIALIZED: 'Initialized',\n AWAITING_GC: 'Discarded. Awaiting garbage collection',\n AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n FINALIZED: 'Finalized! Awaiting garbage collection'\n};\n\n/* Secret props keys */\n// Symbols are non-enumerable by default, does not show in for...in or Object.keys\n// but are copied with Object.assign ¯\\_(ツ)_/¯\n// Supported everywhere except IE11, can be polyfilled with core-js\nexport const PROP_SYMBOLS = {\n COMPONENT: Symbol.for('component'),\n ASYNC_DEFAULTS: Symbol.for('asyncPropDefaults'),\n ASYNC_ORIGINAL: Symbol.for('asyncPropOriginal'),\n ASYNC_RESOLVED: Symbol.for('asyncPropResolved')\n};\n","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {\n assertWebGL2Context,\n getGLTypeFromTypedArray,\n getTypedArrayFromGLType\n} from '../webgl-utils';\nimport {log} from '@luma.gl/gltools';\nimport {assert, checkProps} from '../utils';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, usage = this.usage) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = data.byteLength;\n\n this._trackAllocatedMemory(data.byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","import {isWebGL2} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {assertWebGLContext, getKey, getKeyValue} from '../webgl-utils';\nimport {uid, assert, stubRemovedMethods} from '../utils';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this.constructor.name);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n if (children && deleteChildren) {\n children.filter(Boolean).forEach(child => {\n child.delete();\n });\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(opts = {}) {\n const {parameters, keys} = {};\n\n // Get parameter definitions for this Resource\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, opts);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {GLenum} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /**\n * @param {GLenum} pname\n * @param {GLint|GLfloat|GLenum} param\n * @return {Sampler} returns self to enable chaining\n */\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n _trackAllocatedMemory(bytes, name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n _trackDeallocatedMemory(name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {vec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {vec2} a The vec2 point to rotate\r\n * @param {vec2} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, c) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(c),\n cosC = Math.cos(c); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {vec2} a The first operand\r\n * @param {vec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1];\n var len1 = x1 * x1 + y1 * y1;\n\n if (len1 > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len1 = 1 / Math.sqrt(len1);\n }\n\n var len2 = x2 * x2 + y2 * y2;\n\n if (len2 > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len2 = 1 / Math.sqrt(len2);\n }\n\n var cosine = (x1 * x2 + y1 * y2) * len1 * len2;\n\n if (cosine > 1.0) {\n return 0;\n } else if (cosine < -1.0) {\n return Math.PI;\n } else {\n return Math.acos(cosine);\n }\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return 'vec2(' + a[0] + ', ' + a[1] + ')';\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {vec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, c) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, c) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} c The angle of rotation\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, c) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {vec3} a The first operand\r\n * @param {vec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var tempA = fromValues(a[0], a[1], a[2]);\n var tempB = fromValues(b[0], b[1], b[2]);\n normalize(tempA, tempA);\n normalize(tempB, tempB);\n var cosine = dot(tempA, tempB);\n\n if (cosine > 1.0) {\n return 0;\n } else if (cosine < -1.0) {\n return Math.PI;\n } else {\n return Math.acos(cosine);\n }\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')';\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import GL from '@luma.gl/constants';\n\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\n\nimport {isWebGL2, withParameters, log} from '@luma.gl/gltools';\nimport {global} from 'probe.gl/env';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport {uid, isPowerOfTwo, assert} from '../utils';\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\n// Note (Tarek): Do we really need to support this API?\nconst WebGLBuffer = global.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n static isSupported(gl, {format, linearFiltering} = {}) {\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n super(gl, {id, handle});\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n let {mipmaps = true} = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed: false,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n\n return this;\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}) {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}) {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n /* eslint-disable max-len, max-statements, complexity */\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n assertWebGL2Context(gl);\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n gl.compressedTexImage2D(target, level, format, width, height, border, data);\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n /* global ImageData, HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageBitmap */\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","/* global self, window, global, document, console, process */\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\n\nexport {\n self_ as self,\n window_ as window,\n global_ as global,\n document_ as document,\n process_ as process,\n console_ as console\n};\n","import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils';\nimport {checkProps, assert} from '../utils';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n","// Extensions to math.gl library. Intended to be folded back.\nimport typedArrayManager from './typed-array-manager';\nimport {Vector3} from 'math.gl';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\n// Extract camera vectors (move to math library?)\nexport function extractCameraVectors({viewMatrix, viewMatrixInverse}) {\n // Read the translation from the inverse view matrix\n return {\n eye: [viewMatrixInverse[12], viewMatrixInverse[13], viewMatrixInverse[14]],\n direction: [-viewMatrix[2], -viewMatrix[6], -viewMatrix[10]],\n up: [viewMatrix[1], viewMatrix[5], viewMatrix[9]],\n right: [viewMatrix[0], viewMatrix[4], viewMatrix[8]]\n };\n}\n\nconst cameraPosition = new Vector3();\nconst cameraDirection = new Vector3();\nconst cameraUp = new Vector3();\nconst cameraRight = new Vector3();\nconst nearCenter = new Vector3();\nconst farCenter = new Vector3();\nconst a = new Vector3();\n\n/* eslint-disable max-statements */\n\n// Extract frustum planes in common space.\n// Note that common space is left-handed\n// (with y pointing down)\nexport function getFrustumPlanes({aspect, near, far, fovyRadians, position, direction, up, right}) {\n cameraDirection.copy(direction);\n\n // Account for any scaling of the z axis (e.g. in\n // mercator view matrix)\n const nearFarScale = 1 / cameraDirection.len();\n cameraDirection.normalize();\n\n cameraPosition.copy(position);\n\n cameraUp.copy(up);\n // Account for scaling of the xy axis\n const widthScale = 1 / cameraUp.len();\n cameraUp.normalize();\n cameraRight.copy(right).normalize();\n\n const nearHeight = 2 * Math.tan(fovyRadians / 2) * near * widthScale;\n const nearWidth = nearHeight * aspect;\n\n nearCenter\n .copy(cameraDirection)\n .scale(near * nearFarScale)\n .add(cameraPosition);\n farCenter\n .copy(cameraDirection)\n .scale(far * nearFarScale)\n .add(cameraPosition);\n\n let normal = cameraDirection.clone().negate();\n let distance = normal.dot(nearCenter);\n\n const planes = {\n near: {\n distance,\n normal\n },\n far: {\n distance: cameraDirection.dot(farCenter),\n normal: cameraDirection.clone()\n }\n };\n\n a.copy(cameraRight)\n .scale(nearWidth * 0.5)\n .add(nearCenter)\n .subtract(cameraPosition)\n .normalize();\n normal = new Vector3(a).cross(cameraUp);\n distance = cameraPosition.dot(normal);\n planes.right = {normal, distance};\n\n a.copy(cameraRight)\n .scale(-nearWidth * 0.5)\n .add(nearCenter)\n .subtract(cameraPosition)\n .normalize();\n normal = new Vector3(cameraUp).cross(a);\n distance = cameraPosition.dot(normal);\n planes.left = {normal, distance};\n\n a.copy(cameraUp)\n .scale(nearHeight * 0.5)\n .add(nearCenter)\n .subtract(cameraPosition)\n .normalize();\n normal = new Vector3(cameraRight).cross(a);\n distance = cameraPosition.dot(normal);\n planes.top = {normal, distance};\n\n a.copy(cameraUp)\n .scale(-nearHeight * 0.5)\n .add(nearCenter)\n .subtract(cameraPosition)\n .normalize();\n normal = new Vector3(a).cross(cameraRight);\n distance = cameraPosition.dot(normal);\n planes.bottom = {normal, distance};\n\n return planes;\n}\n\n/**\n * Calculate the low part of a WebGL 64 bit float\n * @param x {number} - the input float number\n * @returns {number} - the lower 32 bit of the number\n */\nexport function fp64LowPart(x) {\n return x - Math.fround(x);\n}\n\nlet scratchArray;\n\n/**\n * Split a Float64Array into a double-length Float32Array\n * @param typedArray {Float64Array}\n * @param size {Number} - per attribute size\n * @param [startIndex] {Number} - start index in the source array\n * @param [endIndex] {Number} - end index in the source array\n * @returns {Float32Array} - high part, low part for each attribute:\n [1xHi, 1yHi, 1zHi, 1xLow, 1yLow, 1zLow, 2xHi, ...]\n */\nexport function toDoublePrecisionArray(typedArray, {size = 1, startIndex = 0, endIndex}) {\n if (!Number.isFinite(endIndex)) {\n endIndex = typedArray.length;\n }\n const count = (endIndex - startIndex) / size;\n scratchArray = typedArrayManager.allocate(scratchArray, count, {\n type: Float32Array,\n size: size * 2\n });\n\n let sourceIndex = startIndex;\n let targetIndex = 0;\n while (sourceIndex < endIndex) {\n for (let j = 0; j < size; j++) {\n const value = typedArray[sourceIndex++];\n scratchArray[targetIndex + j] = value;\n scratchArray[targetIndex + j + size] = fp64LowPart(value);\n }\n targetIndex += size * 2;\n }\n\n return scratchArray.subarray(0, count * size * 2);\n}\n","// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils';\n\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n const target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n return gl.bindFramebuffer(target, value);\n};\nconst readFramebuffer = (gl, value) => {\n return gl.bindFramebuffer(GL.READ_FRAMEBUFFER, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: drawFramebuffer,\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.READ_FRAMEBUFFER_BINDING]: readFramebuffer,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update, capability) =>\n update({\n [capability]: true\n }),\n disable: (update, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n\n bindFramebuffer: (update, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n blendColor: (update, r, g, b, a) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update, r, g, b, a) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update, depth) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update, s) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update, r, g, b, a) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update, zNear, zFar) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update, mask) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","// Support for listening to context state changes and intercepting state queries\n//\n// NOTE: this system does not handle buffer bindings\nimport {GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS} from './webgl-parameter-tables';\nimport {setParameters, getParameters} from './unified-parameter-api';\nimport {assert, deepArrayEqual} from '../utils';\n\n// HELPER FUNCTIONS - INSTALL GET/SET INTERCEPTORS (SPYS) ON THE CONTEXT\n\n// Overrides a WebGLRenderingContext state \"getter\" function\n// to return values directly from cache\nfunction installGetterOverride(gl, functionName) {\n // Get the original function from the WebGLRenderingContext\n const originalGetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function get(...params) {\n const pname = params[0];\n\n // WebGL limits are not prepopulated in the cache, we must\n // query first time. They are all primitive (single value)\n if (!(pname in gl.state.cache)) {\n gl.state.cache[pname] = originalGetterFunc(...params);\n }\n\n // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n return gl.state.enable\n ? // Call the getter the params so that it can e.g. serve from a cache\n gl.state.cache[pname]\n : // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n originalGetterFunc(...params);\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-from-cache`,\n configurable: false\n });\n}\n\n// Overrides a WebGLRenderingContext state \"setter\" function\n// to call a setter spy before the actual setter. Allows us to keep a cache\n// updated with a copy of the WebGL context state.\nfunction installSetterSpy(gl, functionName, setter) {\n // Get the original function from the WebGLRenderingContext\n const originalSetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function set(...params) {\n // Update the value\n // Call the setter with the state cache and the params so that it can store the parameters\n const {valueChanged, oldValue} = setter(gl.state._updateCache, ...params);\n\n // Call the original WebGLRenderingContext func to make sure the context actually gets updated\n if (valueChanged) {\n originalSetterFunc(...params);\n }\n\n // Note: if the original function fails to set the value, our state cache will be bad\n // No solution for this at the moment, but assuming that this is unlikely to be a real problem\n // We could call the setter after the originalSetterFunc. Concern is that this would\n // cause different behavior in debug mode, where originalSetterFunc can throw exceptions\n\n return oldValue;\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-to-cache`,\n configurable: false\n });\n}\n\nfunction installProgramSpy(gl) {\n const originalUseProgram = gl.useProgram.bind(gl);\n\n gl.useProgram = function useProgramLuma(handle) {\n if (gl.state.program !== handle) {\n originalUseProgram(handle);\n gl.state.program = handle;\n }\n };\n}\n\n// HELPER CLASS - GLState\n\n/* eslint-disable no-shadow */\nclass GLState {\n constructor(\n gl,\n {\n copyState = false, // Copy cache from params (slow) or initialize from WebGL defaults (fast)\n log = () => {} // Logging function, called when gl parameter change calls are actually issued\n } = {}\n ) {\n this.gl = gl;\n this.program = null;\n this.stateStack = [];\n this.enable = true;\n this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);\n this.log = log;\n\n this._updateCache = this._updateCache.bind(this);\n Object.seal(this);\n }\n\n push(values = {}) {\n this.stateStack.push({});\n }\n\n pop() {\n assert(this.stateStack.length > 0);\n // Use the saved values in the state stack to restore parameters\n const oldValues = this.stateStack[this.stateStack.length - 1];\n setParameters(this.gl, oldValues, this.cache);\n // Don't pop until we have reset parameters (to make sure other \"stack frames\" are not affected)\n this.stateStack.pop();\n }\n\n // interceptor for context set functions - update our cache and our stack\n // values (Object) - the key values for this setter\n _updateCache(values) {\n let valueChanged = false;\n let oldValue; // = undefined\n\n const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n for (const key in values) {\n assert(key !== undefined);\n const value = values[key];\n const cached = this.cache[key];\n // Check that value hasn't already been shadowed\n if (!deepArrayEqual(value, cached)) {\n valueChanged = true;\n oldValue = cached;\n\n // First, save current value being shadowed\n // If a state stack frame is active, save the current parameter values for pop\n // but first check that value hasn't already been shadowed and saved\n if (oldValues && !(key in oldValues)) {\n oldValues[key] = cached;\n }\n\n // Save current value being shadowed\n this.cache[key] = value;\n }\n }\n\n return {valueChanged, oldValue};\n }\n}\n\n// PUBLIC API\n\n/**\n * Initialize WebGL state caching on a context\n * can be called multiple times to enable/disable\n * @param {WebGLRenderingContext} - context\n */\n// After calling this function, context state will be cached\n// gl.state.push() and gl.state.pop() will be available for saving,\n// temporarily modifying, and then restoring state.\nexport default function trackContextState(gl, {enable = true, copyState} = {}) {\n assert(copyState !== undefined);\n if (!gl.state) {\n /* global window, global */\n const global_ = typeof global !== 'undefined' ? global : window;\n if (global_.polyfillContext) {\n global_.polyfillContext(gl);\n }\n\n // Create a state cache\n gl.state = new GLState(gl, {copyState, enable});\n\n installProgramSpy(gl);\n\n // intercept all setter functions in the table\n for (const key in GL_HOOKED_SETTERS) {\n const setter = GL_HOOKED_SETTERS[key];\n installSetterSpy(gl, key, setter);\n }\n\n // intercept all getter functions in the table\n installGetterOverride(gl, 'getParameter');\n installGetterOverride(gl, 'isEnabled');\n }\n\n gl.state.enable = enable;\n\n return gl;\n}\n\nexport function pushContextState(gl) {\n if (!gl.state) {\n trackContextState(gl, {copyState: false});\n }\n gl.state.push();\n}\n\nexport function popContextState(gl) {\n assert(gl.state);\n gl.state.pop();\n}\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, log} from '@luma.gl/gltools';\n\nimport Resource from './resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport {clear, clearBuffer} from './clear';\nimport {copyToDataUrl} from './copy-and-blit.js';\n\nimport {getFeatures} from '../features';\n\nimport {assertWebGL2Context, getKey} from '../webgl-utils';\n\nimport {assert} from '../utils';\n\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\n\nexport default class Framebuffer extends Resource {\n static isSupported(\n gl,\n {\n colorBufferFloat, // Whether floating point textures can be rendered and read\n colorBufferHalfFloat // Whether half float textures can be rendered and read\n } = {}\n ) {\n let supported = true;\n\n if (colorBufferFloat) {\n supported = Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1, not exposed on all platforms\n gl.getExtension('WEBGL_color_buffer_float') ||\n // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/\n gl.getExtension('OES_texture_float')\n );\n }\n\n if (colorBufferHalfFloat) {\n supported =\n supported &&\n Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1\n gl.getExtension('EXT_color_buffer_half_float')\n );\n }\n\n return supported;\n }\n\n // Create a Framebuffer wrapper for the default framebuffer (target === null)\n static getDefaultFramebuffer(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultFramebuffer =\n gl.luma.defaultFramebuffer ||\n new Framebuffer(gl, {\n id: 'default-framebuffer',\n handle: null,\n attachments: {}\n });\n // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?\n return gl.luma.defaultFramebuffer;\n }\n\n get MAX_COLOR_ATTACHMENTS() {\n return this.gl.getParameter(this.gl.MAX_COLOR_ATTACHMENTS);\n }\n\n get MAX_DRAW_BUFFERS() {\n return this.gl.getParameter(this.gl.MAX_DRAW_BUFFERS);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // Public members\n this.width = null;\n this.height = null;\n this.attachments = {};\n this.readBuffer = GL.COLOR_ATTACHMENT0;\n this.drawBuffers = [GL.COLOR_ATTACHMENT0];\n this.ownResources = [];\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n get color() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get texture() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get depth() {\n return (\n this.attachments[GL.DEPTH_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null\n );\n }\n\n get stencil() {\n return (\n this.attachments[GL.STENCIL_ATTACHMENT] ||\n this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] ||\n null\n );\n }\n\n initialize({\n width = 1,\n height = 1,\n attachments = null,\n color = true,\n depth = true,\n stencil = false,\n check = true,\n readBuffer,\n drawBuffers\n }) {\n assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n\n // Store actual width and height for diffing\n this.width = width;\n this.height = height;\n\n // Resize any provided attachments - note that resize only resizes if needed\n // Note: A framebuffer has no separate size, it is defined by its attachments (which must agree)\n if (attachments) {\n for (const attachment in attachments) {\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({width, height});\n }\n } else {\n // Create any requested default attachments\n attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n }\n\n this.update({clearAttachments: true, attachments, readBuffer, drawBuffers});\n\n // Checks that framebuffer was properly set up, if not, throws an explanatory error\n if (attachments && check) {\n this.checkStatus();\n }\n }\n\n delete() {\n for (const resource of this.ownResources) {\n resource.delete();\n }\n super.delete();\n }\n update({\n attachments = {},\n readBuffer,\n drawBuffers,\n clearAttachments = false,\n resizeAttachments = true\n }) {\n this.attach(attachments, {clearAttachments, resizeAttachments});\n\n const {gl} = this;\n // Multiple render target support, set read buffer and draw buffers\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n }\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n }\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // Attachment resize is expected to be a noop if size is same\n resize({width, height} = {}) {\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n for (const attachmentPoint in this.attachments) {\n this.attachments[attachmentPoint].resize({width, height});\n }\n this.width = width;\n this.height = height;\n return this;\n }\n\n // Attach from a map of attachments\n attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {\n const newAttachments = {};\n\n // Any current attachments need to be removed, add null values to map\n if (clearAttachments) {\n Object.keys(this.attachments).forEach(key => {\n newAttachments[key] = null;\n });\n }\n\n // Overlay the new attachments\n Object.assign(newAttachments, attachments);\n\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (const key in newAttachments) {\n // Ensure key is not undefined\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n\n const attachment = Number(key);\n\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n if (!object) {\n this._unattach(attachment);\n } else if (object instanceof Renderbuffer) {\n this._attachRenderbuffer({attachment, renderbuffer: object});\n } else if (Array.isArray(descriptor)) {\n const [texture, layer = 0, level = 0] = descriptor;\n object = texture;\n this._attachTexture({attachment, texture, layer, level});\n } else {\n this._attachTexture({attachment, texture: object, layer: 0, level: 0});\n }\n\n // Resize objects\n if (resizeAttachments && object) {\n object.resize({width: this.width, height: this.height});\n }\n }\n\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // Assign to attachments and remove any nulls to get a clean attachment map\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments)\n .filter(key => !this.attachments[key])\n .forEach(key => {\n delete this.attachments[key];\n });\n }\n\n checkStatus() {\n const {gl} = this;\n const status = this.getStatus();\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(_getFrameBufferStatus(status));\n }\n return this;\n }\n\n getStatus() {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n return status;\n }\n\n clear({color, depth, stencil, drawBuffers = []} = {}) {\n // Bind framebuffer and delegate to global clear functions\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n if (color || depth || stencil) {\n clear(this.gl, {color, depth, stencil});\n }\n\n drawBuffers.forEach((value, drawBuffer) => {\n clearBuffer({drawBuffer, value});\n });\n\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // NOTE: Slow requires roundtrip to GPU\n // App can provide pixelArray or have it auto allocated by this method\n // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n // newly allocated by this method unless provided by app.\n readPixels(opts = {}) {\n log.error(\n 'Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)'\n )();\n return null;\n }\n\n // Reads data into provided buffer object asynchronously\n // This function doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n readPixelsToBuffer(opts = {}) {\n log.error(\n 'Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels as a dataUrl\n copyToDataUrl(opts = {}) {\n log.error(\n 'Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels into an HTML Image\n copyToImage(opts = {}) {\n log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n return null;\n }\n\n // copyToFramebuffer({width, height}) {\n // const scaleX = width / this.width;\n // const scaleY = height / this.height;\n // const scale = Math.min(scaleX, scaleY);\n // width = width * scale;\n // height = height * scale;\n // const scaledFramebuffer = new Framebuffer(this.gl, {width, height});\n // this.blit();\n // }\n\n // Copy a rectangle from a framebuffer attachment into a texture (at an offset)\n // NOTE: assumes texture has enough storage allocated\n // eslint-disable-next-line complexity\n copyToTexture(opts = {}) {\n log.error(\n 'Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n // WEBGL2 INTERFACE\n\n // Copies a rectangle of pixels between framebuffers\n // eslint-disable-next-line complexity\n blit(opts = {}) {\n log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n return null;\n }\n\n // signals to the GL that it need not preserve all pixels of a specified region of the framebuffer\n invalidate({attachments = [], x = 0, y = 0, width, height}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n const prevHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n if (invalidateAll) {\n gl.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);\n } else {\n gl.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);\n }\n gl.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);\n return this;\n }\n\n // Return the value for `pname` of the specified attachment.\n // The type returned is the type of the requested pname\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n if (value === null) {\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(GL.FRAMEBUFFER, attachment, pname);\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);\n }\n if (keys && value > 1000) {\n value = getKey(this.gl, value);\n }\n return value;\n }\n\n getAttachmentParameters(\n attachment = GL.COLOR_ATTACHMENT0,\n keys,\n parameters = this.constructor.ATTACHMENT_PARAMETERS || []\n ) {\n const values = {};\n for (const pname of parameters) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n return values;\n }\n\n getParameters(keys = true) {\n const attachments = Object.keys(this.attachments);\n // if (this === this.gl.luma.defaultFramebuffer) {\n // attachments = [GL.COLOR_ATTACHMENT0, GL.DEPTH_STENCIL_ATTACHMENT];\n // }\n const parameters = {};\n for (const attachmentName of attachments) {\n const attachment = Number(attachmentName);\n const key = keys ? getKey(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n return parameters;\n }\n\n // DEBUG\n\n // Note: Will only work when called in an event handler\n show() {\n /* global window */\n if (typeof window !== 'undefined') {\n window.open(copyToDataUrl(this), 'luma-debug-texture');\n }\n return this;\n }\n\n log(logLevel = 0, message = '') {\n if (logLevel > log.level || typeof window === 'undefined') {\n return this;\n }\n message = message || `Framebuffer ${this.id}`;\n const image = copyToDataUrl(this, {maxHeight: 100});\n log.image({logLevel, message, image}, message)();\n return this;\n }\n\n // WEBGL INTERFACE\n bind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n\n unbind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n\n // Add a color buffer if requested and not supplied\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.COLOR_ATTACHMENT0] = new Texture2D(this.gl, {\n id: `${this.id}-color0`,\n pixels: null, // reserves texture memory, but texels are undefined\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n }\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.COLOR_ATTACHMENT0]);\n }\n\n if (depth && stencil) {\n // TODO - handle separate stencil\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth-stencil`,\n format: GL.DEPTH24_STENCIL8,\n width,\n height: 111\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT]);\n // TODO - optional texture\n // new Texture2D(this.gl, {\n // id: `${this.id}-depth-stencil`,\n // format: GL.DEPTH24_STENCIL8,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n // width,\n // height,\n // mipmaps: false\n // });\n } else if (depth) {\n // Add a depth buffer if requested and not supplied\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth`,\n format: GL.DEPTH_COMPONENT16,\n width,\n height\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_ATTACHMENT]);\n } else if (stencil) {\n // TODO - handle separate stencil\n assert(false);\n }\n\n return defaultAttachments;\n }\n\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n if (!oldAttachment) {\n return;\n }\n if (oldAttachment instanceof Renderbuffer) {\n // render buffer\n this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, null);\n } else {\n // Must be a texture attachment\n this.gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, null, 0);\n }\n delete this.attachments[attachment];\n }\n\n _attachRenderbuffer({attachment = GL.COLOR_ATTACHMENT0, renderbuffer}) {\n const {gl} = this;\n // TODO - is the bind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, renderbuffer.handle);\n gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);\n // TODO - is the unbind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.attachments[attachment] = renderbuffer;\n }\n\n // layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`\n // level = 0 - mipmapLevel (must be 0 in WebGL1)\n _attachTexture({attachment = GL.COLOR_ATTACHMENT0, texture, layer, level}) {\n const {gl} = this;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n gl.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n this.attachments[attachment] = texture;\n }\n\n // Expects framebuffer to be bound\n _setReadBuffer(readBuffer) {\n const {gl} = this;\n if (isWebGL2(gl)) {\n gl.readBuffer(readBuffer);\n } else {\n // Setting to color attachment 0 is a noop, so allow it in WebGL1\n assert(\n readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n this.readBuffer = readBuffer;\n }\n\n // Expects framebuffer to be bound\n _setDrawBuffers(drawBuffers) {\n const {gl} = this;\n if (isWebGL2(gl)) {\n gl.drawBuffers(drawBuffers);\n } else {\n const ext = gl.getExtension('WEBGL.draw_buffers');\n if (ext) {\n ext.drawBuffersWEBGL(drawBuffers);\n } else {\n // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1\n assert(\n drawBuffers.length === 1 &&\n (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n }\n this.drawBuffers = drawBuffers;\n }\n\n // Attempt to provide workable defaults for WebGL2 symbols under WebGL1\n // null means OK to query\n // TODO - move to webgl1 polyfills\n /* eslint-disable complexity */\n _getAttachmentParameterFallback(pname) {\n const caps = getFeatures(this.gl);\n\n switch (pname) {\n case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint\n return !caps.WEBGL2 ? 0 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint\n return !caps.WEBGL2 ? 8 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum\n return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;\n default:\n return null;\n }\n }\n /* eslint-enable complexity */\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n }\n}\n\n// PUBLIC METHODS\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n // Use error mapping if installed\n const STATUS = Framebuffer.STATUS || {};\n return STATUS[status] || `Framebuffer error ${status}`;\n}\n\nexport const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint\n // EXT_sRGB or WebGL2\n GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG\n // WebGL2\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint\n // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\n // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.\n];\n\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n","function noop() {}\n\nconst DEFAULT_SETTINGS = {\n onStart: noop,\n onUpdate: noop,\n onInterrupt: noop,\n onEnd: noop\n};\n\nexport default class Transition {\n /**\n * @params timeline {Timeline}\n */\n constructor(timeline) {\n this._inProgress = false;\n this._handle = null;\n this.timeline = timeline;\n\n // Defaults\n this.settings = {};\n }\n\n /* Public API */\n get inProgress() {\n return this._inProgress;\n }\n\n /**\n * (re)start this transition.\n * @params props {object} - optional overriding props. see constructor\n */\n start(props) {\n this.cancel();\n this.settings = Object.assign({}, DEFAULT_SETTINGS, props);\n this._inProgress = true;\n\n const {timeline, settings} = this;\n this._handle = timeline.addChannel({\n delay: timeline.getTime(),\n duration: settings.duration\n });\n settings.onStart(this);\n }\n\n /**\n * end this transition if it is in progress.\n */\n end() {\n if (this._inProgress) {\n this.timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n this.settings.onEnd(this);\n }\n }\n\n /**\n * cancel this transition if it is in progress.\n */\n cancel() {\n if (this._inProgress) {\n this.settings.onInterrupt(this);\n this.timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n }\n }\n\n /**\n * update this transition. Returns `true` if updated.\n */\n update() {\n if (!this._inProgress) {\n return false;\n }\n\n this.time = this.timeline.getTime(this._handle);\n // Call subclass method\n this._onUpdate();\n // Call user callback\n this.settings.onUpdate(this);\n\n // This only works if `settings.duration` is set\n // Spring transition must call `end` manually\n if (this.timeline.isFinished(this._handle)) {\n this.end();\n }\n return true;\n }\n\n /* Private API */\n\n _onUpdate() {\n // for subclass override\n }\n}\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {vec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {vec4} result the receiving vector\r\n * @param {vec4} U the first vector\r\n * @param {vec4} V the second vector\r\n * @param {vec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n;\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","/* eslint-disable camelcase */\nimport {assert} from '../utils';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n","import {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader) {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n\n const loaderOptions = loader.options && loader.options[loader.id];\n hasParser = hasParser || (loaderOptions && loaderOptions.workerUrl);\n\n return hasParser;\n}\n\nexport function normalizeLoader(loader) {\n // This error is fairly easy to trigger by mixing up import statments etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE LOADER.EXTENSIONS\n\n // Remove `extension`` prop, replace with `extensions``\n if (loader.extension) {\n loader.extensions = loader.extensions || loader.extension;\n delete loader.extension;\n }\n\n // Ensure loader.extensions is an array\n if (!Array.isArray(loader.extensions)) {\n loader.extensions = [loader.extensions];\n }\n\n assert(loader.extensions && loader.extensions.length > 0 && loader.extensions[0]);\n\n // NORMALIZE text and binary flags\n\n // Ensure at least one of text/binary flags are properly set\n if (loader.parseTextSync) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n // TODO - Does adding a default MIME type add any value?\n /*\n if (!loader.mimeType) {\n if (loader.binary) {\n // TODO - do we need separate mime types for binary and text formats?\n loader.mimeType = 'application/octet-stream';\n }\n }\n */\n\n return loader;\n}\n","import GL from '@luma.gl/constants';\nimport {isWebGL2} from '@luma.gl/gltools';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n","const BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\n\nexport const mimeTypeMap = new Map([\n ['image/png', {test: isPng, getSize: getPngSize}],\n ['image/jpeg', {test: isJpeg, getSize: getJpegSize}],\n ['image/gif', {test: isGif, getSize: getGifSize}],\n ['image/bmp', {test: isBmp, getSize: getBmpSize}]\n]);\n\n// PNG\n\nexport function isPng(dataView) {\n // Check file contains the first 4 bytes of the PNG signature.\n return dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n}\n\nfunction getPngSize(dataView) {\n // Extract size from a binary PNG file\n return {\n width: dataView.getUint32(16, BIG_ENDIAN),\n height: dataView.getUint32(20, BIG_ENDIAN)\n };\n}\n\n// GIF\n\nexport function isGif(dataView) {\n // Check first 4 bytes of the GIF signature (\"GIF8\").\n return dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n}\n\n// Extract size from a binary GIF file\n// TODO: GIF is not this simple\nfunction getGifSize(dataView) {\n // GIF is little endian.\n return {\n width: dataView.getUint16(6, LITTLE_ENDIAN),\n height: dataView.getUint16(8, LITTLE_ENDIAN)\n };\n}\n\n// BMP\n\n// TODO: BMP is not this simple\nexport function isBmp(dataView) {\n // Check magic number is valid (first 2 characters should be \"BM\").\n return dataView.byteLength >= 2 && dataView.getUint16(0, BIG_ENDIAN) === 0x424d;\n}\n\nfunction getBmpSize(dataView) {\n // BMP is little endian.\n return {\n width: dataView.getUint32(18, LITTLE_ENDIAN),\n height: dataView.getUint32(22, LITTLE_ENDIAN)\n };\n}\n\n// JPEG\n\nexport function isJpeg(dataView) {\n // Check file contains the JPEG \"start of image\" (SOI) marker\n // followed by another marker.\n return (\n dataView.byteLength >= 3 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 &&\n dataView.getUint8(2, BIG_ENDIAN) === 0xff\n );\n}\n\n// Extract width and height from a binary JPEG file\nfunction getJpegSize(dataView) {\n // Check file contains the JPEG \"start of image\" (SOI) marker.\n if (dataView.byteLength < 2 || dataView.getUint16(0, BIG_ENDIAN) !== 0xffd8) {\n return null;\n }\n\n const {tableMarkers, sofMarkers} = getJpegMarkers();\n\n // Exclude the two byte SOI marker.\n let i = 2;\n while (i < dataView.byteLength) {\n const marker = dataView.getUint16(i, BIG_ENDIAN);\n\n // The frame that contains the width and height of the JPEG image.\n if (sofMarkers.has(marker)) {\n return {\n height: dataView.getUint16(i + 5, BIG_ENDIAN), // Number of lines\n width: dataView.getUint16(i + 7, BIG_ENDIAN) // Number of pixels per line\n };\n }\n\n // Miscellaneous tables/data preceding the frame header.\n if (!tableMarkers.has(marker)) {\n return null;\n }\n\n // Length includes size of length parameter but not the two byte header.\n i += 2;\n i += dataView.getUint16(i, BIG_ENDIAN);\n }\n\n return null;\n}\n\nfunction getJpegMarkers() {\n // Tables/misc header markers.\n // DQT, DHT, DAC, DRI, COM, APP_n\n const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n for (let i = 0xffe0; i < 0xfff0; ++i) {\n tableMarkers.add(i);\n }\n\n // SOF markers and DHP marker.\n // These markers are after tables/misc data.\n const sofMarkers = new Set([\n 0xffc0,\n 0xffc1,\n 0xffc2,\n 0xffc3,\n 0xffc5,\n 0xffc6,\n 0xffc7,\n 0xffc9,\n 0xffca,\n 0xffcb,\n 0xffcd,\n 0xffce,\n 0xffcf,\n 0xffde\n ]);\n\n return {tableMarkers, sofMarkers};\n}\n","import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n","import {assert} from '../utils';\nimport {isWebGL, isWebGL2} from '@luma.gl/gltools';\n\n// Heuristic testing of contexts (to indentify debug wrappers around gl contexts)\n// const GL_ARRAY_BUFFER = 0x8892;\n\nexport const ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nexport function assertWebGLContext(gl) {\n // Need to handle debug context\n assert(isWebGL(gl), ERR_CONTEXT);\n}\n\nexport function assertWebGL2Context(gl) {\n // Need to handle debug context\n assert(isWebGL2(gl), ERR_WEBGL2);\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport {pushContextState, popContextState} from './track-context-state';\nimport {isObjectEmpty, isWebGL, assert} from '../utils';\n\n// Sets any GL parameter regardless of function (gl.blendMode, ...)\n// Note: requires a `cache` object to be set on the context (gl.state.cache)\n// This object is used to fill in any missing values for composite setter functions\nexport function setParameters(gl, values) {\n assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n if (isObjectEmpty(values)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in values) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 values in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, values[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, values, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n// Copies the state from a context (gl.getParameter should not be overriden)\n// Reads the entire WebGL state from a context\n// Caveat: This generates a huge amount of synchronous driver roundtrips and should be\n// considered a very slow operation, to be used only if/when a context already manipulated\n// by external code needs to be synchronized for the first time\n// @return {Object} - a newly created map, with values keyed by GL parameters\nexport function getParameters(gl, parameters) {\n // default to querying all parameters\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n// Reset all parameters to a (almost) pure context state\n// NOTE: viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n// NOT the canvas size dimensions, so they will have to be properly set after\n// calling this function.\nexport function resetParameters(gl) {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\n\n// Stores current \"global\" WebGL context settings, changes selected parameters,\n// executes function, restores parameters\nexport function withParameters(gl, parameters, func) {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(gl);\n }\n\n const {nocatch = true} = parameters;\n\n pushContextState(gl);\n setParameters(gl, parameters);\n\n // Setup is done, call the function\n let value;\n\n if (nocatch) {\n // Avoid try catch to minimize stack size impact for safe execution paths\n value = func(gl);\n popContextState(gl);\n } else {\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n try {\n value = func(gl);\n } finally {\n popContextState(gl);\n }\n }\n\n return value;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Flattens a nested array into a single level array,\n * or a single value into an array with one value\n * @example flatten([[1, [2]], [3], 4]) => [1, 2, 3, 4]\n * @example flatten(1) => [1]\n * @param {Array} array The array to flatten.\n * @param {Function} filter= - Optional predicate called on each `value` to\n * determine if it should be included (pushed onto) the resulting array.\n * @param {Function} map= - Optional transform applied to each array elements.\n * @param {Array} result=[] - Optional array to push value into\n * @return {Array} Returns the new flattened array (new array or `result` if provided)\n */\nexport function flatten(array, {filter = () => true, map = x => x, result = []} = {}) {\n // Wrap single object in array\n if (!Array.isArray(array)) {\n return filter(array) ? [map(array)] : [];\n }\n // Deep flatten and filter the array\n return flattenArray(array, filter, map, result);\n}\n\n// Deep flattens an array. Helper to `flatten`, see its parameters\nfunction flattenArray(array, filter, map, result) {\n let index = -1;\n while (++index < array.length) {\n const value = array[index];\n if (Array.isArray(value)) {\n flattenArray(value, filter, map, result);\n } else if (filter(value)) {\n result.push(map(value));\n }\n }\n return result;\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n","import {assert} from '../utils';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(`math.gl assertion ${message}`);\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","const fp32shader = `\\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 0.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 0.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`;\n\nexport default {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\n\n// We are generating these from the js code in constants.js\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM)\n .map(key => `const float COORDINATE_SYSTEM_${key} = ${COORDINATE_SYSTEM[key]}.;`)\n .join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE)\n .map(key => `const float PROJECTION_MODE_${key} = ${PROJECTION_MODE[key]}.;`)\n .join('');\n\nexport default `\\\n${COORDINATE_SYSTEM_GLSL_CONSTANTS}\n${PROJECTION_MODE_GLSL_CONSTANTS}\n\nuniform float project_uCoordinateSystem;\nuniform float project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform float project_uAntimeridian;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\n\n//\n// Scaling offsets - scales meters to \"world distance\"\n// Note the scalar version of project_size is for scaling the z component only\n//\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z;\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy;\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter;\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\n\n//\n// Projecting normal - transform deltas from current coordinate system to\n// normals in the worldspace\n//\nvec3 project_normal(vec3 vector) {\n // Apply model matrix\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n return normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n dy = clamp(dy, -1., 1.);\n }\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\n\n//\n// Projecting positions - non-linear projection: lnglats => unit tile [0-1, 0-1]\n//\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x - project_uAntimeridian, 360.0) + project_uAntimeridian;\n }\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(lnglat.y) * 0.5))\n );\n}\n\n//\n// Projects positions (defined by project_uCoordinateSystem) to common space (defined by project_uProjectionMode)\n//\nvec4 project_position(vec4 position, vec3 position64Low) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT && project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n return project_uModelMatrix * vec4(\n project_mercator_(position.xy) * WORLD_SCALE,\n project_size(position.z),\n position.w\n );\n }\n\n vec4 position_world = project_uModelMatrix * position;\n\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT && project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n // Subtract high part of 64 bit value. Convert remainder to float32, preserving precision.\n position_world.xyz -= project_uCoordinateOrigin;\n position_world.xyz += position64Low;\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY) {\n position_world.xyz -= project_uCoordinateOrigin;\n // Translation is already added to the high parts\n position_world += project_uModelMatrix * vec4(position64Low, 0.0);\n }\n\n return project_offset_(position_world);\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_METER_OFFSETS ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n // Needs to be divided with project_uCommonUnitsPerMeter\n position.w *= project_uCommonUnitsPerMeter.z;\n }\n return viewProjectionMatrix * position + center;\n}\n\n//\n// Projects from common space coordinates to clip space.\n// Uses project_uViewProjectionMatrix\n//\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\n\n// Returns a clip space offset that corresponds to a given number of screen pixels\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`;\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {fp32} from '@luma.gl/core';\nimport projectShader from './project.glsl';\nimport {getUniformsFromViewport} from './viewport-uniforms';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (opts.viewport) {\n return getUniformsFromViewport(opts);\n }\n return {};\n}\n\nexport default {\n name: 'project',\n dependencies: [fp32],\n vs: projectShader,\n getUniforms\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst EMPTY_ARRAY = [];\nconst placeholderArray = [];\n\n/*\n * Create an Iterable\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n * and a \"context\" tracker from the given data\n */\nexport function createIterable(data, startRow = 0, endRow = Infinity) {\n let iterable = EMPTY_ARRAY;\n\n const objectInfo = {\n index: -1,\n data,\n // visitor can optionally utilize this to avoid constructing a new array for every object\n target: []\n };\n\n if (!data) {\n iterable = EMPTY_ARRAY;\n } else if (typeof data[Symbol.iterator] === 'function') {\n // data is already an iterable\n iterable = data;\n } else if (data.length > 0) {\n placeholderArray.length = data.length;\n iterable = placeholderArray;\n }\n\n if (startRow > 0 || Number.isFinite(endRow)) {\n iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n objectInfo.index = startRow - 1;\n }\n\n return {iterable, objectInfo};\n}\n\n/*\n * Returns true if data is an async iterable object\n */\nexport function isAsyncIterable(data) {\n return data && data[Symbol.asyncIterator];\n}\n\n/*\n * Create an accessor function from a flat buffer that yields the value at each object index\n */\nexport function getAccessorFromBuffer(typedArray, {size, stride, offset, startIndices, nested}) {\n const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : size;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n\n return (_, {index, target}) => {\n if (!startIndices) {\n const sourceIndex = index * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n return target;\n }\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || vertexCount;\n let result;\n\n if (nested) {\n result = new Array(endIndex - startIndex);\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n target = new Array(size);\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n result[i - startIndex] = target;\n }\n } else if (elementStride === size) {\n result = typedArray.subarray(\n startIndex * size + elementOffset,\n endIndex * size + elementOffset\n );\n } else {\n result = new typedArray.constructor((endIndex - startIndex) * size);\n let targetIndex = 0;\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n result[targetIndex++] = typedArray[sourceIndex + j];\n }\n }\n }\n\n return result;\n };\n}\n","export class TypedArrayManager {\n constructor({overAlloc = 2, poolSize = 100} = {}) {\n this.overAlloc = overAlloc;\n this.poolSize = poolSize;\n\n this._pool = [];\n }\n\n allocate(typedArray, count, {size = 1, type, padding = 0, copy = false}) {\n const Type = type || (typedArray && typedArray.constructor) || Float32Array;\n\n const newSize = count * size + padding;\n if (ArrayBuffer.isView(typedArray)) {\n if (newSize <= typedArray.length) {\n return typedArray;\n }\n if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n return new Type(typedArray.buffer, 0, newSize);\n }\n }\n\n const newArray = this._allocate(Type, newSize);\n\n if (typedArray && copy) {\n newArray.set(typedArray);\n } else {\n // Hack - viewing a buffer with a different type may create NaNs\n // which crashes the Attribute validation\n newArray.fill(0, 0, 4);\n }\n\n this._release(typedArray);\n return newArray;\n }\n\n release(typedArray) {\n this._release(typedArray);\n }\n\n _allocate(Type, size) {\n // Allocate at least one element to ensure a valid buffer\n size = Math.max(Math.ceil(size * this.overAlloc), 1);\n\n // Check if available in pool\n const pool = this._pool;\n const byteLength = Type.BYTES_PER_ELEMENT * size;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i >= 0) {\n // Create a new array using an existing buffer\n return new Type(pool.splice(i, 1)[0], 0, size);\n }\n return new Type(size);\n }\n\n _release(typedArray) {\n if (!ArrayBuffer.isView(typedArray)) {\n return;\n }\n const pool = this._pool;\n const {buffer} = typedArray;\n // Save the buffer of the released array into the pool\n // Sort buffers by size\n // TODO - implement binary search?\n const {byteLength} = buffer;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i < 0) {\n pool.push(buffer);\n } else if (i > 0 || pool.length < this.poolSize) {\n pool.splice(i, 0, buffer);\n }\n if (pool.length > this.poolSize) {\n // Drop the smallest one\n pool.shift();\n }\n }\n}\n\nexport default new TypedArrayManager();\n","import GL from '@luma.gl/constants';\n\n// Define local extension strings to optimize minification\n// const SRGB = 'EXT_sRGB';\n// const EXT_FLOAT_WEBGL1 = 'WEBGL.color_buffer_float';\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n\n// NOTE(Tarek): bpp === \"bytes per pixel\", used for\n// memory usage calculations.\nexport default {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {bpp: 2},\n [GL.RGB565]: {bpp: 2},\n [GL.RGB5_A1]: {bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL.color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n","/* eslint-disable no-inline-comments */\nimport GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) {\n return false;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n static isSupported(gl, {format} = {}) {\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, {format}) {\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, format, GL.SAMPLES);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n // Creates and initializes a renderbuffer object's data store\n initialize({format, width = 1, height = 1, samples = 0}) {\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(\n this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp\n );\n\n return this;\n }\n\n resize({width, height}) {\n // Don't resize if width/height haven't changed\n if (width !== this.width || height !== this.height) {\n return this.initialize({width, height, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(GL.RENDERBUFFER_INTERNAL_FORMAT);\n this.width = this.getParameter(GL.RENDERBUFFER_WIDTH);\n this.height = this.getParameter(GL.RENDERBUFFER_HEIGHT);\n this.samples = this.getParameter(GL.RENDERBUFFER_SAMPLES);\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n","import checkIfBrowser from '../env/is-browser';\n\nexport {self, window, global, document, process, console} from '../env/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n/* global __VERSION__ */\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","/* global fetch, Image */\nimport {assert} from '../utils';\n\nlet pathPrefix = '';\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\n// Reads raw file data from:\nexport function loadFile(url, options = {}) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\n\n/*\n * Loads images asynchronously\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * returns a promise tracking the load\n */\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = (opts && opts.crossOrigin) || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n","import GL from '@luma.gl/constants';\nimport Texture from './texture';\nimport {assertWebGLContext} from '../webgl-utils';\nimport {loadImage} from '../utils/load-file';\n\nexport default class Texture2D extends Texture {\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {data: loadImage(props.data)});\n }\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\n/* global process, window, global, document, self, importScripts */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\nexport const isBrowser =\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\nexport const isWorker = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && process.version.match(/v([0-9]*)/);\nexport const nodeVersion = (matches && parseFloat(matches[1])) || 0;\n","// vec2 additions\n\nexport function vec2_transformMat4AsVector(out, a, m) {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\n\n// vec3 additions\n\n// Transform as vector, only uses 3x3 minor matrix\nexport function vec3_transformMat4AsVector(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\n\nexport function vec3_transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\n\n// vec4 additions\n\nexport function vec4_transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nexport function vec4_transformMat3(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n","/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = gl => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: gl => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: gl => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n gl => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n","import GL from '@luma.gl/constants';\nimport {assert, isWebGL2} from '../utils';\n\nimport {getParameterPolyfill} from './get-parameter-polyfill';\n\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\n\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\n// Return object with webgl2 flag and an extension\nfunction getExtensionData(gl, extension) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\n// function mapExtensionConstant(gl, constant) {\n// switch (constant) {\n// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;\n// }\n// }\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n // POLYFILL TABLE\n [OES_vertex_array_object]: {\n meta: {suffix: 'OES'},\n // NEW METHODS\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n // constants: {\n // VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'\n // }\n },\n vertexAttribDivisor(location, divisor) {\n // Accept divisor 0 even if instancing is not supported (0 = no instancing)\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {suffix: 'EXT'},\n // WebGL1: Polyfills the WebGL2 Query API\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n getQuery(handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n // The WebGL1 extension uses getQueryObject rather then getQueryParameter\n getQueryParameter(handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: () => {}\n }\n};\n\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n // Ensure readBuffer is a no-op\n readBuffer: (gl, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {\n // assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);\n }\n },\n // Override for getVertexAttrib that returns sane values for non-WebGL1 constants\n getVertexAttrib: (gl, originalFunc, location, pname) => {\n // const gl = this; // eslint-disable-line\n const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);\n\n let result;\n switch (pname) {\n // WebGL1 attributes will never be integer\n case GL.VERTEX_ATTRIB_ARRAY_INTEGER:\n result = !webgl2 ? false : undefined;\n break;\n // if instancing is not available, return 0 meaning divisor has not been set\n case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n // Handle transform feedback and uniform block queries in WebGL1\n getProgramParameter: (gl, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:\n return GL.SEPARATE_ATTRIBS;\n case GL.TRANSFORM_FEEDBACK_VARYINGS:\n return 0;\n case GL.ACTIVE_UNIFORM_BLOCKS:\n return 0;\n default:\n }\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.SAMPLES:\n return new Int32Array([0]);\n default:\n }\n }\n return gl.getInternalformatParameter(target, format, pname);\n },\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case GL.TEXTURE_MAX_ANISOTROPY_EXT:\n const {extensions} = gl.luma;\n const ext = extensions[EXT_texture_filter_anisotropic];\n pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: getParameterPolyfill,\n hint(gl, originalFunc, pname, value) {\n // TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // switch (pname) {\n // case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // }\n return originalFunc(pname, value);\n }\n};\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Common environment setup\n */\nimport {window, process, isBrowser} from './globals';\n\nexport default function getHiResTimestamp() {\n let timestamp;\n // Get best timer available.\n if (isBrowser && window.performance) {\n timestamp = window.performance.now();\n } else if (process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","function isEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n const len = a.length;\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\nexport default function memoize(compute) {\n let cachedArgs = {};\n let cachedResult;\n\n return args => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n return cachedResult;\n };\n}\n","/* global ImageBitmap, Image */\nimport {global, isBrowser} from '../utils/globals';\nimport assert from '../utils/assert';\n\nexport const IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nexport const HTML_IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: \"false\" positives if jsdom is installed\nexport const NODE_IMAGE_SUPPORTED = Boolean(global._parseImageNode);\n\n// Checks if a loaders.gl image type is supported\nexport function isImageTypeSupported(type) {\n switch (type) {\n case 'auto':\n return true;\n case 'imagebitmap':\n return IMAGE_BITMAP_SUPPORTED;\n case 'html':\n return HTML_IMAGE_SUPPORTED;\n case 'ndarray':\n return NODE_IMAGE_SUPPORTED;\n default:\n throw new Error(`Unknown image format ${type}`);\n }\n}\n\n// Returns the best loaders.gl image type supported on current run-time environment\nexport function getDefaultImageType() {\n if (isImageTypeSupported('ndarray')) {\n return 'ndarray';\n }\n if (isImageTypeSupported('html')) {\n return 'html';\n }\n if (isImageTypeSupported('imagebitmap')) {\n return 'imagebitmap';\n }\n\n if (!isBrowser) {\n throw new Error(`Install '@loaders.gl/polyfills' to parse images under Node.js`);\n }\n\n return assert(false); // Internal error, no valid format available, should not happen\n}\n","// Attributions\n// * Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\n// TODO: make these functions work for Node.js buffers?\n// Quarantine references to Buffer to prevent bundler from adding big polyfills\n// import {bufferToArrayBuffer} from '../node/buffer-to-array-buffer';\n// TODO - this should be handled in @loaders.gl/polyfills\n\nimport {mimeTypeMap} from './binary-image-parsers';\n\nconst ERR_INVALID_MIME_TYPE = `Invalid MIME type. Supported MIME types are: ${Array.from(\n mimeTypeMap.keys()\n).join(', ')}`;\n\n// Supported image types are PNG, JPEG, GIF and BMP.\nexport function isBinaryImage(arrayBuffer, mimeType) {\n if (mimeType) {\n const {test} = getBinaryImageTypeHandlers(mimeType);\n const dataView = toDataView(arrayBuffer);\n return test(dataView);\n }\n // check if known type\n return Boolean(getBinaryImageMIMEType(arrayBuffer));\n}\n\n// Sniffs the contents of a file to attempt to deduce the image type\nexport function getBinaryImageMIMEType(arrayBuffer) {\n const dataView = toDataView(arrayBuffer);\n\n // Loop through each file type and see if they work.\n for (const [mimeType, {test}] of mimeTypeMap.entries()) {\n if (test(dataView)) {\n return mimeType;\n }\n }\n\n return null;\n}\n\nexport function getBinaryImageSize(arrayBuffer, mimeType = null) {\n mimeType = mimeType || getBinaryImageMIMEType(arrayBuffer);\n\n const {getSize} = getBinaryImageTypeHandlers(mimeType);\n\n const dataView = toDataView(arrayBuffer);\n const size = getSize(dataView);\n\n if (!size) {\n throw new Error(`invalid image data for type: ${mimeType}`);\n }\n\n return size;\n}\n\nfunction getBinaryImageTypeHandlers(mimeType) {\n const handlers = mimeTypeMap.get(mimeType);\n if (!handlers) {\n throw new Error(ERR_INVALID_MIME_TYPE);\n }\n return handlers;\n}\n\nfunction toDataView(data) {\n data = data.buffer || data;\n // TODO: make these functions work for Node.js buffers?\n // if (bufferToArrayBuffer) {\n // data = bufferToArrayBuffer(data);\n // }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n return new DataView(data.buffer || data);\n }\n\n throw new Error('toDataView');\n}\n","import {global} from '../utils/globals';\nimport assert from '../utils/assert';\nimport {getBinaryImageMIMEType} from '../binary-image-api/binary-image-api';\n\n// Use polyfills if installed to p[arsed image using get-pixels\nexport default function parseToNodeImage(arrayBuffer, options) {\n assert(global._parseImageNode); // '@loaders.gl/polyfills not installed'\n const mimeType = getBinaryImageMIMEType(arrayBuffer);\n return global._parseImageNode(arrayBuffer, mimeType, options);\n}\n","/* global self, Image, Blob */\n\n// Parses html image from array buffer\nexport default async function parseToImage(arrayBuffer, options) {\n // Note: image parsing requires conversion to Blob (for createObjectURL).\n // Potentially inefficient for not using `response.blob()` (and for File / Blob inputs)...\n // But presumably not worth adding 'blob' flag to loader objects?\n\n // TODO - how to determine mime type? Param? Sniff here?\n const mimeType = 'image/jpeg';\n const blob = new Blob([arrayBuffer], {type: mimeType});\n const URL = self.URL || self.webkitURL;\n const objectUrl = URL.createObjectURL(blob);\n try {\n return await loadToImage(objectUrl, options);\n } finally {\n URL.revokeObjectURL(objectUrl);\n }\n}\n\nexport async function loadToImage(url, options) {\n const image = new Image();\n image.src = url;\n\n // The `image.onload()` callback does not guarantee that the image has been decoded\n // so a main thread \"freeze\" can be incurred when using the image for the first time.\n // `Image.decode()` returns a promise that completes when image is decoded.\n\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode\n // Note: When calling `img.decode()`, we do not need to wait for `img.onload()`\n // Note: `HTMLImageElement.decode()` is not available in Edge and IE11\n if (options.image && options.image.decode && image.decode) {\n await image.decode();\n return image;\n }\n\n // Create a promise that tracks onload/onerror callbacks\n return await new Promise((resolve, reject) => {\n try {\n image.onload = () => resolve(image);\n image.onerror = err => reject(new Error(`Could not load image ${url}: ${err}`));\n } catch (error) {\n reject(error);\n }\n });\n}\n","/* global Blob, createImageBitmap */\n\n// Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n// Supported on worker threads, not supported on Edge, IE11 and Safari\n// https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n\nexport default function parseToImageBitmap(arrayBuffer, options) {\n // NOTE: In some cases unnecessary conversion to blob (response, blob, file input)\n const blob = new Blob([new Uint8Array(arrayBuffer)]); // MIME type not needed...\n const imagebitmapOptions = options && options.imagebitmap;\n return imagebitmapOptions ? createImageBitmap(blob) : createImageBitmap(blob, imagebitmapOptions);\n}\n","/* global TextDecoder, btoa */ // encodeURLComponent,\nimport {loadToImage} from './parse-to-image';\n\nexport default async function parseSVG(arrayBuffer, options) {\n // Prepare a properly tagged data URL, and load using normal mechanism\n const textDecoder = new TextDecoder();\n const xmlText = textDecoder.decode(arrayBuffer);\n // TODO Escape in browser to support e.g. Chinese characters\n // if (typeof unescape === 'function' && typeof encodeURLComponent === 'function') {\n // xmlText = unescape(encodeURLComponent(xmlText));\n // }\n // base64 encoding is safer. utf-8 fails in some browsers\n const src = `data:image/svg+xml;base64,${btoa(xmlText)}`;\n return await loadToImage(src, options);\n}\n","import assert from '../utils/assert';\nimport {isImageTypeSupported, getDefaultImageType} from '../parsed-image-api/image-type';\n\nimport parseToNodeImage from './parse-to-node-image';\nimport parseToImage from './parse-to-image';\nimport parseToImageBitmap from './parse-to-image-bitmap';\nimport parseSVG from './parse-svg';\n\n// Parse to platform defined image type (ndarray on node, ImageBitmap or HTMLImage on browser)\nexport default async function parseImage(arrayBuffer, options, context) {\n options = options || {};\n\n const {url} = context || {};\n if (url && /\\.svg((\\?|#).*)?$/.test(url)) {\n // eslint-disable-next-line\n console.warn('@loaders.gl/images: SVG parsing needs to be fixed for 2.0');\n return await parseSVG(arrayBuffer, options);\n }\n\n const format = getImageOutputFormat(options);\n switch (format) {\n case 'imagebitmap':\n return await parseToImageBitmap(arrayBuffer, options);\n case 'html':\n return await parseToImage(arrayBuffer, options);\n case 'ndarray':\n return await parseToNodeImage(arrayBuffer, options);\n default:\n return assert(false);\n }\n}\n\n// The user can request a specific output format via `options.type`\n// TODO - ImageBitmap vs HTMLImage depends on worker threads...\nfunction getImageOutputFormat(options = {}) {\n const imageOptions = options.image || {};\n const type = imageOptions.type || 'auto';\n\n switch (type) {\n case 'imagebitmap':\n case 'html':\n case 'ndarray':\n // Check that it is actually supported\n if (!isImageTypeSupported(type)) {\n throw new Error(`Requested image type ${type} not available in current environment`);\n }\n return type;\n\n case 'auto':\n return getDefaultImageType();\n\n default:\n // Note: isImageTypeSupported throws on unknown type\n throw new Error(`Unknown image format ${type}`);\n }\n}\n","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import {log} from '@luma.gl/gltools';\nimport {Stats} from 'probe.gl';\nimport {isBrowser, global} from 'probe.gl/env';\n\n// Version detection using babel plugin\n/* global __VERSION__ */\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nclass StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({id: name}));\n }\n\n return this.stats.get(name);\n }\n}\n\nconst lumaStats = new StatsManager();\n\nif (global.luma && global.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${global.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!global.luma) {\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n global.luma = global.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default global.luma;\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n/* global process */\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser() {\n // Check if in browser by duck-typing Node context\n const isNode =\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread() {\n return isBrowser() && typeof document !== 'undefined';\n}\n","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* global window, process, navigator */\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent) {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n Boolean(process.versions.electron)\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec4 from 'gl-matrix/vec4';\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\n\nimport memoize from '../../utils/memoize';\nimport assert from '../../utils/assert';\n\n// To quickly set a vector to zero\nconst ZERO_VECTOR = [0, 0, 0, 0];\n// 4x4 matrix that drops 4th component of vector\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\n\n// Based on viewport-mercator-project/test/fp32-limits.js\nexport const LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD = 12;\n\nconst getMemoizedViewportUniforms = memoize(calculateViewportUniforms);\n\n// The code that utilizes Matrix4 does the same calculation as their mat4 counterparts,\n// has lower performance but provides error checking.\n// Uncomment when debugging\nfunction calculateMatrixAndOffset({viewport, coordinateSystem, coordinateOrigin}) {\n const {viewMatrixUncentered, projectionMatrix, projectionMode} = viewport;\n let {viewMatrix, viewProjectionMatrix} = viewport;\n\n let projectionCenter = ZERO_VECTOR;\n let cameraPosCommon = viewport.cameraPosition;\n let shaderCoordinateOrigin = coordinateOrigin;\n let offsetMode = true;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n if (projectionMode === PROJECTION_MODE.WEB_MERCATOR) {\n offsetMode = false;\n } else {\n shaderCoordinateOrigin = [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0];\n }\n } else if (projectionMode === PROJECTION_MODE.IDENTITY) {\n shaderCoordinateOrigin = viewport.position.map(Math.fround);\n }\n\n shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n\n if (offsetMode) {\n // Calculate transformed projectionCenter (using 64 bit precision JS)\n // This is the key to offset mode precision\n // (avoids doing this addition in 32 bit precision in GLSL)\n const positionCommonSpace = viewport.projectPosition(shaderCoordinateOrigin);\n\n cameraPosCommon = [\n cameraPosCommon[0] - positionCommonSpace[0],\n cameraPosCommon[1] - positionCommonSpace[1],\n cameraPosCommon[2] - positionCommonSpace[2]\n ];\n\n positionCommonSpace[3] = 1;\n\n // projectionCenter = new Matrix4(viewProjectionMatrix)\n // .transformVector([positionPixels[0], positionPixels[1], 0.0, 1.0]);\n projectionCenter = vec4.transformMat4([], positionCommonSpace, viewProjectionMatrix);\n\n // Always apply uncentered projection matrix if available (shader adds center)\n viewMatrix = viewMatrixUncentered || viewMatrix;\n\n // Zero out 4th coordinate (\"after\" model matrix) - avoids further translations\n // viewMatrix = new Matrix4(viewMatrixUncentered || viewMatrix)\n // .multiplyRight(VECTOR_TO_POINT_MATRIX);\n viewProjectionMatrix = mat4.multiply([], projectionMatrix, viewMatrix);\n viewProjectionMatrix = mat4.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n }\n\n return {\n viewMatrix,\n viewProjectionMatrix,\n projectionCenter,\n cameraPosCommon,\n shaderCoordinateOrigin\n };\n}\n\n/**\n * Returns uniforms for shaders based on current projection\n * includes: projection matrix suitable for shaders\n *\n * TODO - Ensure this works with any viewport, not just WebMercatorViewports\n *\n * @param {WebMercatorViewport} viewport -\n * @return {Float32Array} - 4x4 projection matrix that can be used in shaders\n */\nexport function getUniformsFromViewport({\n viewport,\n devicePixelRatio = 1,\n modelMatrix = null,\n // Match Layer.defaultProps\n coordinateSystem = COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n wrapLongitude = false,\n // Deprecated\n projectionMode,\n positionOrigin\n} = {}) {\n assert(viewport);\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n const uniforms = getMemoizedViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n });\n\n uniforms.project_uWrapLongitude = wrapLongitude;\n uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n\n return uniforms;\n}\n\nfunction calculateViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n}) {\n const {\n projectionCenter,\n viewProjectionMatrix,\n cameraPosCommon,\n shaderCoordinateOrigin\n } = calculateMatrixAndOffset({\n coordinateSystem,\n coordinateOrigin,\n viewport\n });\n\n // Calculate projection pixels per unit\n const distanceScales = viewport.getDistanceScales();\n\n const viewportSize = [viewport.width * devicePixelRatio, viewport.height * devicePixelRatio];\n\n const uniforms = {\n // Projection mode values\n project_uCoordinateSystem: coordinateSystem,\n project_uProjectionMode: viewport.projectionMode,\n project_uCoordinateOrigin: shaderCoordinateOrigin,\n project_uCenter: projectionCenter,\n project_uAntimeridian: (viewport.longitude || 0) - 180,\n\n // Screen size\n project_uViewportSize: viewportSize,\n project_uDevicePixelRatio: devicePixelRatio,\n\n // Distance at which screen pixels are projected\n project_uFocalDistance: viewport.focalDistance || 1,\n project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n project_uScale: viewport.scale, // This is the mercator scale (2 ** zoom)\n\n project_uViewProjectionMatrix: viewProjectionMatrix,\n\n // This is for lighting calculations\n project_uCameraPosition: cameraPosCommon\n };\n\n const distanceScalesAtOrigin = viewport.getDistanceScales(shaderCoordinateOrigin);\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.METER_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n break;\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n break;\n\n default:\n break;\n }\n\n return uniforms;\n}\n","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(Object(source));\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","import {equals} from 'math.gl';\nimport assert from '../utils/assert';\n\nexport default class TransitionInterpolator {\n /**\n * @param opts {array|object}\n * @param opts.compare {array} - prop names used in equality check\n * @param opts.extract {array} - prop names needed for interpolation\n * @param opts.required {array} - prop names that must be supplied\n * alternatively, supply one list of prop names as `opts` if all of the above are the same.\n */\n constructor(opts = {}) {\n if (Array.isArray(opts)) {\n opts = {\n compare: opts,\n extract: opts,\n required: opts\n };\n }\n const {compare, extract, required} = opts;\n\n this._propsToCompare = compare;\n this._propsToExtract = extract;\n this._requiredProps = required;\n }\n\n /**\n * Checks if two sets of props need transition in between\n * @param currentProps {object} - a list of viewport props\n * @param nextProps {object} - a list of viewport props\n * @returns {bool} - true if two props are equivalent\n */\n arePropsEqual(currentProps, nextProps) {\n for (const key of this._propsToCompare || Object.keys(nextProps)) {\n if (\n !(key in currentProps) ||\n !(key in nextProps) ||\n !equals(currentProps[key], nextProps[key])\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Called before transition starts to validate/pre-process start and end props\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Object} {start, end} - start and end props to be passed\n * to `interpolateProps`\n */\n initializeProps(startProps, endProps) {\n let result;\n\n if (this._propsToExtract) {\n const startViewStateProps = {};\n const endViewStateProps = {};\n\n for (const key of this._propsToExtract) {\n startViewStateProps[key] = startProps[key];\n endViewStateProps[key] = endProps[key];\n }\n result = {start: startViewStateProps, end: endViewStateProps};\n } else {\n result = {start: startProps, end: endProps};\n }\n\n this._checkRequiredProps(result.start);\n this._checkRequiredProps(result.end);\n\n return result;\n }\n\n /**\n * Returns viewport props in transition\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @param t {number} - a time factor between [0, 1]\n * @returns {object} - a list of interpolated viewport props\n */\n interpolateProps(startProps, endProps, t) {\n return endProps;\n }\n\n /**\n * Returns transition duration\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Number} - transition duration in milliseconds\n */\n getDuration(startProps, endProps) {\n return endProps.transitionDuration;\n }\n\n _checkRequiredProps(props) {\n if (!this._requiredProps) {\n return;\n }\n\n this._requiredProps.forEach(propName => {\n const value = props[propName];\n assert(\n Number.isFinite(value) || Array.isArray(value),\n `${propName} is required for transition`\n );\n });\n }\n}\n","/* eslint-disable complexity */\n\n/* This class creates a luma.gl-compatible \"view\" on top of a DataColumn instance */\nexport default class ShaderAttribute {\n constructor(dataColumn, opts) {\n // Options that cannot be changed later\n this.opts = opts;\n this.source = dataColumn;\n }\n\n get value() {\n return this.source.value;\n }\n\n getValue() {\n const buffer = this.source.getBuffer();\n const accessor = this.getAccessor();\n if (buffer) {\n return [buffer, accessor];\n }\n\n const {value} = this.source;\n const {size} = accessor;\n let constantValue = value;\n\n if (value && value.length !== size) {\n constantValue = new Float32Array(size);\n // initiate offset values\n const index = accessor.elementOffset || 0; // element offset\n for (let i = 0; i < size; ++i) {\n constantValue[i] = value[index + i];\n }\n }\n\n return constantValue;\n }\n\n getAccessor() {\n return {\n // source data accessor\n ...this.source.getAccessor(),\n // shader attribute overrides\n ...this.opts\n };\n }\n}\n","/* eslint-disable complexity */\nimport GL from '@luma.gl/constants';\nimport {hasFeature, FEATURES, Buffer} from '@luma.gl/core';\nimport ShaderAttribute from './shader-attribute';\nimport {glArrayFromType} from './gl-utils';\nimport typedArrayManager from '../../utils/typed-array-manager';\nimport {toDoublePrecisionArray} from '../../utils/math-utils';\nimport log from '../../utils/log';\n\nfunction getStride(accessor) {\n return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(baseAccessor, shaderAttributeOptions) {\n if (shaderAttributeOptions.offset) {\n log.removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n }\n\n // All shader attributes share the parent's stride\n const stride = getStride(baseAccessor);\n // `vertexOffset` is used to access the neighboring vertex's value\n // e.g. `nextPositions` in polygon\n const vertexOffset =\n 'vertexOffset' in shaderAttributeOptions\n ? shaderAttributeOptions.vertexOffset\n : baseAccessor.vertexOffset || 0;\n // `elementOffset` is defined when shader attribute's size is smaller than the parent's\n // e.g. `translations` in transform matrix\n const elementOffset = shaderAttributeOptions.elementOffset || 0;\n const offset =\n // offsets defined by the attribute\n vertexOffset * stride +\n elementOffset * baseAccessor.bytesPerElement +\n // offsets defined by external buffers if any\n (baseAccessor.offset || 0);\n\n return {\n ...shaderAttributeOptions,\n offset,\n stride\n };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(baseAccessor, shaderAttributeOptions) {\n const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n\n return {\n high: resolvedOptions,\n low: {\n ...resolvedOptions,\n offset: resolvedOptions.offset + baseAccessor.size * 4\n }\n };\n}\n\nexport default class DataColumn {\n /* eslint-disable max-statements */\n constructor(gl, opts) {\n this.gl = gl;\n this.id = opts.id;\n this.size = opts.size;\n\n const logicalType = opts.logicalType || opts.type;\n const doublePrecision = logicalType === GL.DOUBLE;\n\n let {defaultValue} = opts;\n defaultValue = Number.isFinite(defaultValue)\n ? [defaultValue]\n : defaultValue || new Array(this.size).fill(0);\n opts.defaultValue = defaultValue;\n\n let bufferType = logicalType;\n if (doublePrecision) {\n bufferType = GL.FLOAT;\n } else if (!bufferType && opts.isIndexed) {\n bufferType =\n gl && hasFeature(gl, FEATURES.ELEMENT_INDEX_UINT32) ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;\n } else if (!bufferType) {\n bufferType = GL.FLOAT;\n }\n opts.logicalType = logicalType;\n opts.type = bufferType;\n\n // This is the attribute type defined by the layer\n // If an external buffer is provided, this.type may be overwritten\n // But we always want to use defaultType for allocation\n let defaultType = glArrayFromType(logicalType || bufferType || GL.FLOAT);\n this.shaderAttributes = {};\n this.doublePrecision = doublePrecision;\n\n // `fp64: false` tells a double-precision attribute to allocate Float32Arrays\n // by default when using auto-packing. This is more efficient in use cases where\n // high precision is unnecessary, but the `64Low` attribute is still required\n // by the shader.\n if (doublePrecision && opts.fp64 === false) {\n defaultType = Float32Array;\n }\n opts.bytesPerElement = defaultType.BYTES_PER_ELEMENT;\n\n this.defaultType = defaultType;\n this.value = null;\n this.settings = opts;\n this.state = {\n externalBuffer: null,\n bufferAccessor: opts,\n allocatedValue: null,\n constant: false\n };\n this._buffer = null;\n\n this.setData(opts);\n }\n /* eslint-enable max-statements */\n\n get buffer() {\n if (!this._buffer) {\n const {isIndexed, type} = this.settings;\n this._buffer = new Buffer(this.gl, {\n id: this.id,\n target: isIndexed ? GL.ELEMENT_ARRAY_BUFFER : GL.ARRAY_BUFFER,\n accessor: {type}\n });\n }\n return this._buffer;\n }\n\n get byteOffset() {\n const accessor = this.getAccessor();\n if (accessor.vertexOffset) {\n return accessor.vertexOffset * getStride(accessor);\n }\n return 0;\n }\n\n delete() {\n if (this._buffer) {\n this._buffer.delete();\n this._buffer = null;\n }\n typedArrayManager.release(this.state.allocatedValue);\n }\n\n getShaderAttributes(id, options) {\n if (this.doublePrecision) {\n const shaderAttributes = {};\n const isBuffer64Bit = this.value instanceof Float64Array;\n\n const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(\n this.getAccessor(),\n options || {}\n );\n\n shaderAttributes[id] = new ShaderAttribute(this, doubleShaderAttributeDefs.high);\n shaderAttributes[`${id}64Low`] = isBuffer64Bit\n ? new ShaderAttribute(this, doubleShaderAttributeDefs.low)\n : new Float32Array(this.size); // use constant for low part if buffer is 32-bit\n return shaderAttributes;\n }\n if (options) {\n const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n return {[id]: new ShaderAttribute(this, shaderAttributeDef)};\n }\n return {[id]: this};\n }\n\n getBuffer() {\n if (this.state.constant) {\n return null;\n }\n return this.state.externalBuffer || this._buffer;\n }\n\n getValue() {\n if (this.state.constant) {\n return this.value;\n }\n return [this.getBuffer(), this.getAccessor()];\n }\n\n getAccessor() {\n return this.state.bufferAccessor;\n }\n\n // returns true if success\n // eslint-disable-next-line max-statements\n setData(opts) {\n const {state} = this;\n if (ArrayBuffer.isView(opts)) {\n opts = {value: opts};\n } else if (opts instanceof Buffer) {\n opts = {buffer: opts};\n }\n\n const accessor = {...this.settings, ...opts};\n state.bufferAccessor = accessor;\n\n if (opts.constant) {\n // set constant\n let value = opts.value;\n value = this._normalizeValue(value, [], 0);\n if (this.settings.normalized) {\n value = this._normalizeConstant(value);\n }\n const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n if (!hasChanged) {\n return false;\n }\n state.externalBuffer = null;\n state.constant = true;\n this.value = value;\n } else if (opts.buffer) {\n const buffer = opts.buffer;\n state.externalBuffer = buffer;\n state.constant = false;\n this.value = opts.value;\n\n // Copy the type of the buffer into the accessor\n accessor.type = buffer.accessor.type;\n accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT;\n accessor.stride = getStride(accessor);\n } else if (opts.value) {\n this._checkExternalBuffer(opts);\n\n let value = opts.value;\n state.externalBuffer = null;\n state.constant = false;\n this.value = value;\n\n accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n accessor.stride = getStride(accessor);\n\n const {buffer, byteOffset} = this;\n\n if (this.doublePrecision && value instanceof Float64Array) {\n value = toDoublePrecisionArray(value, accessor);\n }\n // TODO: support offset in buffer.setData?\n if (buffer.byteLength < value.byteLength + byteOffset) {\n // Over allocation is required because shader attributes may have bigger offsets\n buffer.reallocate((value.byteLength + byteOffset) * 2);\n }\n // Hack: force Buffer to infer data type\n buffer.setAccessor(null);\n buffer.subData({data: value, offset: byteOffset});\n accessor.type = buffer.accessor.type;\n }\n\n return true;\n }\n\n updateSubBuffer(opts = {}) {\n const {value} = this;\n const {startOffset = 0, endOffset} = opts;\n this.buffer.subData({\n data:\n this.doublePrecision && value instanceof Float64Array\n ? toDoublePrecisionArray(value, {\n size: this.size,\n startIndex: startOffset,\n endIndex: endOffset\n })\n : value.subarray(startOffset, endOffset),\n offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n });\n }\n\n allocate({numInstances, copy = false}) {\n const {state} = this;\n const oldValue = state.allocatedValue;\n\n // Allocate at least one element to ensure a valid buffer\n const value = typedArrayManager.allocate(oldValue, numInstances + 1, {\n size: this.size,\n type: this.defaultType,\n copy\n });\n this.value = value;\n const {buffer, byteOffset} = this;\n\n if (buffer.byteLength < value.byteLength + byteOffset) {\n buffer.reallocate(value.byteLength + byteOffset);\n\n if (copy && oldValue) {\n // Upload the full existing attribute value to the GPU, so that updateBuffer\n // can choose to only update a partial range.\n // TODO - copy old buffer to new buffer on the GPU\n buffer.subData({\n data:\n oldValue instanceof Float64Array ? toDoublePrecisionArray(oldValue, this) : oldValue,\n offset: byteOffset\n });\n }\n }\n\n state.allocatedValue = value;\n state.constant = false;\n state.externalBuffer = null;\n state.bufferAccessor = this.settings;\n return true;\n }\n\n // PRIVATE HELPER METHODS\n _checkExternalBuffer(opts) {\n const {value} = opts;\n if (!opts.constant && value) {\n const ArrayType = this.defaultType;\n\n let illegalArrayType = false;\n if (this.doublePrecision) {\n // not 32bit or 64bit\n illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n }\n if (illegalArrayType) {\n throw new Error(`Attribute ${this.id} does not support ${value.constructor.name}`);\n }\n if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n log.warn(`Attribute ${this.id} is normalized`)();\n }\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer\n _normalizeConstant(value) {\n switch (this.settings.type) {\n case GL.BYTE:\n // normalize [-128, 127] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 128) / 255) * 2 - 1);\n\n case GL.SHORT:\n // normalize [-32768, 32767] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 32768) / 65535) * 2 - 1);\n\n case GL.UNSIGNED_BYTE:\n // normalize [0, 255] to [0, 1]\n return new Float32Array(value).map(x => x / 255);\n\n case GL.UNSIGNED_SHORT:\n // normalize [0, 65535] to [0, 1]\n return new Float32Array(value).map(x => x / 65535);\n\n default:\n // No normalization for gl.FLOAT and gl.HALF_FLOAT\n return value;\n }\n }\n\n /* check user supplied values and apply fallback */\n _normalizeValue(value, out, start) {\n const {defaultValue, size} = this.settings;\n\n if (Number.isFinite(value)) {\n out[start] = value;\n return out;\n }\n if (!value) {\n out[start] = defaultValue[0];\n return out;\n }\n\n // Important - switch cases are 5x more performant than a for loop!\n /* eslint-disable no-fallthrough, default-case */\n switch (size) {\n case 4:\n out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n case 3:\n out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n case 2:\n out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n case 1:\n out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n break;\n\n default:\n // In the rare case where the attribute size > 4, do it the slow way\n // This is used for e.g. transform matrices\n let i = size;\n while (--i >= 0) {\n out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n }\n }\n\n return out;\n }\n\n _areValuesEqual(value1, value2) {\n if (!value1 || !value2) {\n return false;\n }\n const {size} = this;\n for (let i = 0; i < size; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n}\n","import GL from '@luma.gl/constants';\n\n/* eslint-disable complexity */\nexport function glArrayFromType(glType) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.DOUBLE:\n return Float64Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return Uint8ClampedArray;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Unknown GL type');\n }\n}\n/* eslint-enable complexity */\n","/* \n * range (Array)\n * + start (Number) - the start index (incl.)\n * + end (Number) - the end index (excl.)\n * rangeList (Array) - array of sorted, combined ranges\n */\nexport const EMPTY = [];\nexport const FULL = [[0, Infinity]];\n\n// Insert a range into a range collection\nexport function add(rangeList, range) {\n // Noop if range collection already covers all\n if (rangeList === FULL) {\n return rangeList;\n }\n\n // Validate the input range\n if (range[0] < 0) {\n range[0] = 0;\n }\n if (range[0] >= range[1]) {\n return rangeList;\n }\n\n // TODO - split off to tree-shakable Range class\n const newRangeList = [];\n const len = rangeList.length;\n let insertPosition = 0;\n\n for (let i = 0; i < len; i++) {\n const range0 = rangeList[i];\n\n if (range0[1] < range[0]) {\n // the current range is to the left of the new range\n newRangeList.push(range0);\n insertPosition = i + 1;\n } else if (range0[0] > range[1]) {\n // the current range is to the right of the new range\n newRangeList.push(range0);\n } else {\n range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n }\n }\n newRangeList.splice(insertPosition, 0, range);\n return newRangeList;\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/*\n * Helper function for padArray\n */\nfunction padArrayChunk({source, target, start = 0, end, getData}) {\n end = end || target.length;\n\n const sourceLength = source.length;\n const targetLength = end - start;\n\n if (sourceLength > targetLength) {\n target.set(source.subarray(0, targetLength), start);\n return;\n }\n\n target.set(source, start);\n\n if (!getData) {\n return;\n }\n\n // source is not large enough to fill target space, call `getData` to get filler data\n let i = sourceLength;\n while (i < targetLength) {\n const datum = getData(i, source);\n for (let j = 0; j < datum.length; j++) {\n target[start + i] = datum[j];\n i++;\n }\n }\n}\n\n/*\n * The padArray function stretches a source array to the size of a target array.\n The arrays can have internal structures (like the attributes of PathLayer and\n SolidPolygonLayer), defined by the optional sourceStartIndices and targetStartIndices parameters.\n If the target array is larger, the getData callback is used to fill in the blanks.\n * @params {TypedArray} source - original data\n * @params {TypedArray} target - output data\n * @params {Number} size - length per datum\n * @params {Function} getData - callback to get new data when source is short\n * @params {Array} [sourceStartIndices] - subdivision of the original data in [object0StartIndex, object1StartIndex, ...]\n * @params {Array} [targetStartIndices] - subdivision of the output data in [object0StartIndex, object1StartIndex, ...]\n */\nexport function padArray({source, target, size, getData, sourceStartIndices, targetStartIndices}) {\n if (!Array.isArray(targetStartIndices)) {\n // Flat arrays\n padArrayChunk({\n source,\n target,\n getData\n });\n return target;\n }\n\n // Arrays have internal structure\n let sourceIndex = 0;\n let targetIndex = 0;\n const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n for (let i = 1; i < n; i++) {\n const nextSourceIndex = sourceStartIndices[i] * size;\n const nextTargetIndex = targetStartIndices[i] * size;\n\n padArrayChunk({\n source: source.subarray(sourceIndex, nextSourceIndex),\n target,\n start: targetIndex,\n end: nextTargetIndex,\n getData: getChunkData\n });\n\n sourceIndex = nextSourceIndex;\n targetIndex = nextTargetIndex;\n }\n\n if (targetIndex < target.length) {\n padArrayChunk({\n source: [],\n target,\n start: targetIndex,\n getData: getChunkData\n });\n }\n\n return target;\n}\n","import {padArray} from '../../utils/array-utils';\n\nconst DEFAULT_TRANSITION_SETTINGS = {\n interpolation: {\n duration: 0,\n easing: t => t\n },\n spring: {\n stiffness: 0.05,\n damping: 0.5\n }\n};\n\nexport function normalizeTransitionSettings(userSettings, layerSettings) {\n if (!userSettings) {\n return null;\n }\n if (Number.isFinite(userSettings)) {\n userSettings = {duration: userSettings};\n }\n userSettings.type = userSettings.type || 'interpolation';\n return Object.assign(\n {},\n DEFAULT_TRANSITION_SETTINGS[userSettings.type],\n layerSettings,\n userSettings\n );\n}\n\n// NOTE: NOT COPYING OVER OFFSET OR STRIDE HERE BECAUSE:\n// (1) WE DON'T SUPPORT INTERLEAVED BUFFERS FOR TRANSITIONS\n// (2) BUFFERS WITH OFFSETS ALWAYS CONTAIN VALUES OF THE SAME SIZE\n// (3) THE OPERATIONS IN THE SHADER ARE PER-COMPONENT (addition and scaling)\nexport function getSourceBufferAttribute(gl, attribute) {\n // The Attribute we pass to Transform as a sourceBuffer must have {divisor: 0}\n // so we create a copy of the attribute (with divisor=0) to use when running\n // transform feedback\n const buffer = attribute.getBuffer();\n if (buffer) {\n return [\n attribute.getBuffer(),\n {\n divisor: 0,\n size: attribute.size,\n normalized: attribute.settings.normalized\n }\n ];\n }\n // constant\n // don't pass normalized here because the `value` from a normalized attribute is\n // already normalized\n return attribute.value;\n}\n\nexport function getAttributeTypeFromSize(size) {\n switch (size) {\n case 1:\n return 'float';\n case 2:\n return 'vec2';\n case 3:\n return 'vec3';\n case 4:\n return 'vec4';\n default:\n throw new Error(`No defined attribute type for size \"${size}\"`);\n }\n}\n\nexport function cycleBuffers(buffers) {\n buffers.push(buffers.shift());\n}\n\nexport function getAttributeBufferLength(attribute, numInstances) {\n const {doublePrecision, settings, value, size} = attribute;\n const multiplier = doublePrecision ? 2 : 1;\n return (settings.noAlloc ? value.length : numInstances * size) * multiplier;\n}\n\n// This helper is used when transitioning attributes from a set of values in one buffer layout\n// to a set of values in a different buffer layout. (Buffer layouts are used when attribute values\n// within a buffer should be grouped for drawElements, like the Polygon layer.) For example, a\n// buffer layout of [3, 4] might have data [A1, A2, A3, B1, B2, B3, B4]. If it needs to transition\n// to a buffer layout of [4, 2], it should produce a buffer, using the transition setting's `enter`\n// function, that looks like this: [A1, A2, A3, A4 (user `enter` fn), B1, B2, 0]. Note: the final\n// 0 in this buffer is because we never shrink buffers, only grow them, for performance reasons.\nexport function padBuffer({\n buffer,\n numInstances,\n attribute,\n fromLength,\n fromStartIndices,\n getData = x => x\n}) {\n // TODO: move the precisionMultiplier logic to the attribute when retrieving\n // its `size` and `elementOffset`?\n const precisionMultiplier = attribute.doublePrecision ? 2 : 1;\n const size = attribute.size * precisionMultiplier;\n const byteOffset = attribute.byteOffset;\n const toStartIndices = attribute.startIndices;\n const hasStartIndices = fromStartIndices && toStartIndices;\n const toLength = getAttributeBufferLength(attribute, numInstances);\n const isConstant = attribute.state.constant;\n\n // check if buffer needs to be padded\n if (!hasStartIndices && fromLength >= toLength) {\n return;\n }\n\n const toData = isConstant\n ? attribute.value\n : attribute.getBuffer().getData({srcByteOffset: byteOffset});\n if (attribute.settings.normalized) {\n const getter = getData;\n getData = (value, chunk) => attribute._normalizeConstant(getter(value, chunk));\n }\n\n const getMissingData = isConstant\n ? (i, chunk) => getData(toData, chunk)\n : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n\n const source = buffer.getData({length: fromLength});\n const data = new Float32Array(toLength);\n padArray({\n source,\n target: data,\n sourceStartIndices: fromStartIndices,\n targetStartIndices: toStartIndices,\n size,\n getData: getMissingData\n });\n\n // TODO: support offset in buffer.setData?\n if (buffer.byteLength < data.byteLength + byteOffset) {\n buffer.reallocate(data.byteLength + byteOffset);\n }\n buffer.subData({data, offset: byteOffset});\n}\n","/* eslint-disable complexity */\nimport DataColumn from './data-column';\nimport assert from '../../utils/assert';\nimport {createIterable, getAccessorFromBuffer} from '../../utils/iterable-utils';\nimport {fillArray} from '../../utils/flatten';\nimport * as range from '../../utils/range';\nimport {normalizeTransitionSettings} from './attribute-transition-utils';\n\nexport default class Attribute extends DataColumn {\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n const {\n // deck.gl fields\n transition = false,\n noAlloc = false,\n update = null,\n accessor = null,\n transform = null,\n startIndices = null\n } = opts;\n\n Object.assign(this.settings, {\n transition,\n noAlloc,\n update: update || (accessor && this._autoUpdater),\n accessor,\n transform\n });\n\n Object.assign(this.state, {\n lastExternalBuffer: null,\n binaryValue: null,\n binaryAccessor: null,\n needsUpdate: true,\n needsRedraw: false,\n updateRanges: range.FULL,\n startIndices\n });\n\n Object.seal(this.settings);\n Object.seal(this.state);\n\n // Check all fields and generate helpful error messages\n this._validateAttributeUpdaters();\n }\n\n get startIndices() {\n return this.state.startIndices;\n }\n\n set startIndices(layout) {\n this.state.startIndices = layout;\n }\n\n needsUpdate() {\n return this.state.needsUpdate;\n }\n\n needsRedraw({clearChangedFlags = false} = {}) {\n const needsRedraw = this.state.needsRedraw;\n this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n return needsRedraw;\n }\n\n getUpdateTriggers() {\n const {accessor} = this.settings;\n\n // Backards compatibility: allow attribute name to be used as update trigger key\n return [this.id].concat((typeof accessor !== 'function' && accessor) || []);\n }\n\n supportsTransition() {\n return Boolean(this.settings.transition);\n }\n\n // Resolve transition settings object if transition is enabled, otherwise `null`\n getTransitionSetting(opts) {\n const {accessor} = this.settings;\n // TODO: have the layer resolve these transition settings itself?\n const layerSettings = this.settings.transition;\n if (!this.supportsTransition()) {\n return null;\n }\n // these are the transition settings passed in by the user\n const userSettings = Array.isArray(accessor)\n ? opts[accessor.find(a => opts[a])]\n : opts[accessor];\n\n // Shorthand: use duration instead of parameter object\n return normalizeTransitionSettings(userSettings, layerSettings);\n }\n\n setNeedsUpdate(reason = this.id, dataRange) {\n this.state.needsUpdate = this.state.needsUpdate || reason;\n if (dataRange) {\n const {startRow = 0, endRow = Infinity} = dataRange;\n this.state.updateRanges = range.add(this.state.updateRanges, [startRow, endRow]);\n } else {\n this.state.updateRanges = range.FULL;\n }\n }\n\n clearNeedsUpdate() {\n this.state.needsUpdate = false;\n this.state.updateRanges = range.EMPTY;\n }\n\n setNeedsRedraw(reason = this.id) {\n this.state.needsRedraw = this.state.needsRedraw || reason;\n }\n\n update(opts) {\n // backward compatibility\n this.setData(opts);\n }\n\n allocate(numInstances) {\n const {state, settings} = this;\n\n if (settings.noAlloc) {\n // Data is provided through a Buffer object.\n return false;\n }\n\n if (settings.update) {\n assert(Number.isFinite(numInstances));\n super.allocate({\n numInstances,\n copy: state.updateRanges !== range.FULL\n });\n return true;\n }\n\n return false;\n }\n\n updateBuffer({numInstances, data, props, context}) {\n if (!this.needsUpdate()) {\n return false;\n }\n\n const {\n state: {updateRanges},\n settings: {update, noAlloc}\n } = this;\n\n let updated = true;\n if (update) {\n // Custom updater - typically for non-instanced layers\n for (const [startRow, endRow] of updateRanges) {\n update.call(context, this, {data, startRow, endRow, props, numInstances});\n }\n if (!this.value) {\n // no value was assigned during update\n } else if (this.constant || this.buffer.byteLength < this.value.byteLength) {\n this.setData({\n value: this.value,\n constant: this.constant\n });\n } else {\n for (const [startRow, endRow] of updateRanges) {\n const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n const endOffset = Number.isFinite(endRow)\n ? this.getVertexOffset(endRow)\n : noAlloc || !Number.isFinite(numInstances)\n ? this.value.length\n : numInstances * this.size;\n\n super.updateSubBuffer({startOffset, endOffset});\n }\n }\n this._checkAttributeArray();\n } else {\n updated = false;\n }\n\n this.clearNeedsUpdate();\n this.setNeedsRedraw();\n\n return updated;\n }\n\n // Use generic value\n // Returns true if successful\n setConstantValue(value) {\n if (value === undefined || typeof value === 'function') {\n return false;\n }\n\n const hasChanged = this.setData({constant: true, value});\n\n if (hasChanged) {\n this.setNeedsRedraw();\n }\n this.clearNeedsUpdate();\n return true;\n }\n\n // Use external buffer\n // Returns true if successful\n // eslint-disable-next-line max-statements\n setExternalBuffer(buffer) {\n const {state} = this;\n\n if (!buffer) {\n state.lastExternalBuffer = null;\n return false;\n }\n\n this.clearNeedsUpdate();\n\n if (state.lastExternalBuffer === buffer) {\n return true;\n }\n state.lastExternalBuffer = buffer;\n this.setNeedsRedraw();\n this.setData(buffer);\n return true;\n }\n\n // Binary value is a typed array packed from mapping the source data with the accessor\n // If the returned value from the accessor is the same as the attribute value, set it directly\n // Otherwise use the auto updater for transform/normalization\n setBinaryValue(buffer, startIndices = null) {\n const {state, settings} = this;\n\n if (!buffer) {\n state.binaryValue = null;\n state.binaryAccessor = null;\n return false;\n }\n\n if (settings.noAlloc) {\n // Let the layer handle this\n return false;\n }\n\n if (state.binaryValue === buffer) {\n this.clearNeedsUpdate();\n return true;\n }\n state.binaryValue = buffer;\n this.setNeedsRedraw();\n\n if (ArrayBuffer.isView(buffer)) {\n buffer = {value: buffer};\n }\n assert(ArrayBuffer.isView(buffer.value), `invalid ${settings.accessor}`);\n const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n if (needsUpdate) {\n const needsNormalize = buffer.size && buffer.size !== this.size;\n\n state.binaryAccessor = getAccessorFromBuffer(buffer.value, {\n size: buffer.size || this.size,\n stride: buffer.stride,\n offset: buffer.offset,\n startIndices,\n nested: needsNormalize\n });\n // Fall through to auto updater\n return false;\n }\n\n this.clearNeedsUpdate();\n this.setData(buffer);\n return true;\n }\n\n getVertexOffset(row) {\n const {startIndices} = this;\n const vertexIndex = startIndices ? startIndices[row] : row;\n return vertexIndex * this.size;\n }\n\n getShaderAttributes() {\n const shaderAttributeDefs = this.settings.shaderAttributes || {[this.id]: null};\n const shaderAttributes = {};\n\n for (const shaderAttributeName in shaderAttributeDefs) {\n Object.assign(\n shaderAttributes,\n super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName])\n );\n }\n\n return shaderAttributes;\n }\n\n /* eslint-disable max-depth, max-statements */\n _autoUpdater(attribute, {data, startRow, endRow, props, numInstances}) {\n const {settings, state, value, size, startIndices} = attribute;\n\n const {accessor, transform} = settings;\n const accessorFunc =\n state.binaryAccessor || (typeof accessor === 'function' ? accessor : props[accessor]);\n\n assert(typeof accessorFunc === 'function', `accessor \"${accessor}\" is not a function`);\n\n let i = attribute.getVertexOffset(startRow);\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n\n let objectValue = accessorFunc(object, objectInfo);\n if (transform) {\n // transform callbacks could be bound to a particular layer instance.\n // always point `this` to the current layer.\n objectValue = transform.call(this, objectValue);\n }\n\n if (startIndices) {\n const numVertices =\n (startIndices[objectInfo.index + 1] || numInstances) - startIndices[objectInfo.index];\n if (objectValue && Array.isArray(objectValue[0])) {\n let startIndex = i;\n for (const item of objectValue) {\n attribute._normalizeValue(item, value, startIndex);\n startIndex += size;\n }\n } else if (objectValue && objectValue.length > size) {\n value.set(objectValue, i);\n } else {\n attribute._normalizeValue(objectValue, objectInfo.target, 0);\n fillArray({\n target: value,\n source: objectInfo.target,\n start: i,\n count: numVertices\n });\n }\n i += numVertices * size;\n } else {\n attribute._normalizeValue(objectValue, value, i);\n i += size;\n }\n }\n attribute.constant = false;\n }\n /* eslint-enable max-depth, max-statements */\n\n // Validate deck.gl level fields\n _validateAttributeUpdaters() {\n const {settings} = this;\n\n // Check that 'update' is a valid function\n const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n if (!hasUpdater) {\n throw new Error(`Attribute ${this.id} missing update or accessor`);\n }\n }\n\n _checkAttributeArray() {\n const {value} = this;\n if (value && value.length >= 4) {\n const valid =\n Number.isFinite(value[0]) &&\n Number.isFinite(value[1]) &&\n Number.isFinite(value[2]) &&\n Number.isFinite(value[3]);\n if (!valid) {\n throw new Error(`Illegal attribute generated for ${this.id}`);\n }\n }\n }\n}\n","import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS({version = 100, input, inputType, output} = {}) {\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n","import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData({varyingName} = {}) {\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n","// returns GLSL shader version of given shader string\nexport default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n","// Private shader module used by `Transform`\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\nexport default {\n name: 'transform',\n vs,\n fs: null\n};\n","import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n","import GL from '@luma.gl/constants';\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceTextures, framebuffer, targetTexture} = this.bindings[this.currentIndex];\n\n const attributes = Object.assign({}, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n _setupTextures(props = {}) {\n const {_sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `${this.id || 'transform'}-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n","import GL from '@luma.gl/constants';\nimport {getPassthroughFS} from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\n\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert, isObjectEmpty, getShaderVersion} from '@luma.gl/webgl';\nimport Model from '../lib/model';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl) {\n // TODO : differentiate writting to buffer vs not\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete() {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(opts = {}) {\n const {clearRenderTarget = true} = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName = null) {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(opts = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n const data = resourceTransform.getData(opts);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(opts = {}) {\n if ('elementCount' in opts) {\n this.model.setVertexCount(opts.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderVersion(props.vs)}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props) {\n if (\n !isObjectEmpty(props.sourceBuffers) ||\n !isObjectEmpty(props.feedbackBuffers) ||\n (props.varyings && props.varyings.length > 0)\n ) {\n return true;\n }\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n ) {\n return true;\n }\n\n return false;\n}\n","import GL from '@luma.gl/constants';\nimport {Buffer, Transform} from '@luma.gl/core';\nimport Attribute from '../lib/attribute/attribute';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers\n} from '../lib/attribute/attribute-transition-utils';\nimport Transition from './transition';\n\nexport default class GPUInterpolationTransition {\n constructor({gl, attribute, timeline}) {\n this.gl = gl;\n this.type = 'interpolation';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(gl, attribute.settings);\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.transform = getTransform(gl, attribute);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // from\n new Buffer(gl, bufferOpts) // current\n ];\n }\n\n get inProgress() {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings, numInstances) {\n if (transitionSettings.duration <= 0) {\n this.transition.cancel();\n return;\n }\n\n const {gl, buffers, attribute} = this;\n // Alternate between two buffers when new transitions start.\n // Last destination buffer is used as an attribute (from state),\n // And the other buffer is now the current buffer.\n cycleBuffers(buffers);\n\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.update({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value\n });\n\n this.transition.start(transitionSettings);\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aFrom: buffers[0],\n aTo: getSourceBufferAttribute(gl, attribute)\n },\n feedbackBuffers: {\n vCurrent: buffers[1]\n }\n });\n }\n\n update() {\n const updated = this.transition.update();\n if (updated) {\n const {\n time,\n settings: {duration, easing}\n } = this.transition;\n const t = easing(time / duration);\n this.transform.run({\n uniforms: {time: t}\n });\n }\n return updated;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n while (this.buffers.length) {\n this.buffers.pop().delete();\n }\n }\n}\n\nconst vs = `\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;\n\nfunction getTransform(gl, attribute) {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n vs,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vCurrent']\n });\n}\n","import {Transform} from '@luma.gl/core';\nimport GPUInterpolationTransition from '../../transitions/gpu-interpolation-transition';\nimport GPUSpringTransition from '../../transitions/gpu-spring-transition';\nimport log from '../../utils/log';\n\nconst TRANSITION_TYPES = {\n interpolation: GPUInterpolationTransition,\n spring: GPUSpringTransition\n};\n\nexport default class AttributeTransitionManager {\n constructor(gl, {id, timeline}) {\n this.id = id;\n this.gl = gl;\n this.timeline = timeline;\n\n this.transitions = {};\n this.needsRedraw = false;\n this.numInstances = 1;\n\n if (Transform.isSupported(gl)) {\n this.isSupported = true;\n } else if (gl) {\n // This class may be instantiated without a WebGL context (e.g. web worker)\n log.warn('WebGL2 not supported by this browser. Transition animation is disabled.')();\n }\n }\n\n finalize() {\n for (const attributeName in this.transitions) {\n this._removeTransition(attributeName);\n }\n }\n\n /* Public methods */\n\n // Called when attribute manager updates\n // Check the latest attributes for updates.\n update({attributes, transitions = {}, numInstances}) {\n // Transform class will crash if elementCount is 0\n this.numInstances = numInstances || 1;\n\n if (!this.isSupported) {\n return;\n }\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const settings = attribute.getTransitionSetting(transitions);\n\n // this attribute might not support transitions?\n if (!settings) continue; // eslint-disable-line no-continue\n this._updateAttribute(attributeName, attribute, settings);\n }\n\n for (const attributeName in this.transitions) {\n const attribute = attributes[attributeName];\n if (!attribute || !attribute.getTransitionSetting(transitions)) {\n // Animated attribute has been removed\n this._removeTransition(attributeName);\n }\n }\n }\n\n // Returns `true` if attribute is transition-enabled\n hasAttribute(attributeName) {\n const transition = this.transitions[attributeName];\n return transition && transition.inProgress;\n }\n\n // Get all the animated attributes\n getAttributes() {\n const animatedAttributes = {};\n\n for (const attributeName in this.transitions) {\n const transition = this.transitions[attributeName];\n if (transition.inProgress) {\n animatedAttributes[attributeName] = transition.attributeInTransition;\n }\n }\n\n return animatedAttributes;\n }\n\n /* eslint-disable max-statements */\n // Called every render cycle, run transform feedback\n // Returns `true` if anything changes\n run() {\n if (!this.isSupported || this.numInstances === 0) {\n return false;\n }\n\n for (const attributeName in this.transitions) {\n const updated = this.transitions[attributeName].update();\n if (updated) {\n this.needsRedraw = true;\n }\n }\n\n const needsRedraw = this.needsRedraw;\n this.needsRedraw = false;\n return needsRedraw;\n }\n /* eslint-enable max-statements */\n\n /* Private methods */\n _removeTransition(attributeName) {\n this.transitions[attributeName].cancel();\n delete this.transitions[attributeName];\n }\n\n // Check an attributes for updates\n // Returns a transition object if a new transition is triggered.\n _updateAttribute(attributeName, attribute, settings) {\n const transition = this.transitions[attributeName];\n // an attribute can change transition type when it updates\n // let's remove the transition when that happens so we can create the new transition type\n // TODO: when switching transition types, make sure to carry over the attribute's\n // previous buffers, currentLength, startIndices, etc, to be used as the starting point\n // for the next transition\n let isNew = !transition || transition.type !== settings.type;\n if (isNew) {\n if (transition) {\n this._removeTransition(attributeName);\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (TransitionType) {\n this.transitions[attributeName] = new TransitionType({\n attribute,\n timeline: this.timeline,\n gl: this.gl\n });\n } else {\n log.error(`unsupported transition type '${settings.type}'`)();\n isNew = false;\n }\n }\n\n if (isNew || attribute.needsRedraw()) {\n this.needsRedraw = true;\n this.transitions[attributeName].start(settings, this.numInstances);\n }\n }\n}\n","/* eslint-disable complexity, max-statements, max-params */\nimport GL from '@luma.gl/constants';\nimport {Buffer, Transform, Framebuffer, Texture2D, readPixelsToArray} from '@luma.gl/core';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers\n} from '../lib/attribute/attribute-transition-utils';\nimport Attribute from '../lib/attribute/attribute';\nimport Transition from './transition';\n\nexport default class GPUSpringTransition {\n constructor({gl, attribute, timeline}) {\n this.gl = gl;\n this.type = 'spring';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(\n gl,\n Object.assign({}, attribute.settings, {normalized: false})\n );\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.texture = getTexture(gl);\n this.framebuffer = getFramebuffer(gl, this.texture);\n this.transform = getTransform(gl, attribute, this.framebuffer);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // previous\n new Buffer(gl, bufferOpts), // current\n new Buffer(gl, bufferOpts) // next\n ];\n }\n\n get inProgress() {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings, numInstances) {\n const {gl, buffers, attribute} = this;\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.update({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value\n });\n\n // when an attribute changes values, a new transition is started. These\n // are properties that we have to store on this.transition but can change\n // when new transitions are started, so we have to keep them up-to-date.\n // this.transition.start() takes the latest settings and updates them.\n this.transition.start(transitionSettings);\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aTo: getSourceBufferAttribute(gl, attribute)\n }\n });\n }\n\n update() {\n const {buffers, transform, framebuffer, transition} = this;\n const updated = transition.update();\n if (!updated) {\n return false;\n }\n\n transform.update({\n sourceBuffers: {\n aPrev: buffers[0],\n aCur: buffers[1]\n },\n feedbackBuffers: {\n vNext: buffers[2]\n }\n });\n transform.run({\n framebuffer,\n discard: false,\n clearRenderTarget: true,\n uniforms: {\n stiffness: transition.settings.stiffness,\n damping: transition.settings.damping\n },\n parameters: {\n depthTest: false,\n blend: true,\n viewport: [0, 0, 1, 1],\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: [GL.MAX, GL.MAX]\n }\n });\n\n cycleBuffers(buffers);\n this.attributeInTransition.update({buffer: buffers[1]});\n\n const isTransitioning = readPixelsToArray(framebuffer)[0] > 0;\n\n if (!isTransitioning) {\n transition.end();\n }\n\n return true;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n while (this.buffers.length) {\n this.buffers.pop().delete();\n }\n this.texture.delete();\n this.texture = null;\n this.framebuffer.delete();\n this.framebuffer = null;\n }\n}\n\nfunction getTransform(gl, attribute, framebuffer) {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n framebuffer,\n vs: `\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,\n fs: `\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vNext']\n });\n}\n\nfunction getTexture(gl) {\n return new Texture2D(gl, {\n data: new Uint8Array(4),\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n border: 0,\n mipmaps: false,\n dataFormat: GL.RGBA,\n width: 1,\n height: 1\n });\n}\n\nfunction getFramebuffer(gl, texture) {\n return new Framebuffer(gl, {\n id: 'spring-transition-is-transitioning-framebuffer',\n width: 1,\n height: 1,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n });\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable guard-for-in */\nimport Attribute from './attribute';\nimport log from '../../utils/log';\nimport debug from '../../debug';\n\nimport AttributeTransitionManager from './attribute-transition-manager';\n\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\n\nexport default class AttributeManager {\n /**\n * @classdesc\n * Automated attribute generation and management. Suitable when a set of\n * vertex shader attributes are generated by iteration over a data array,\n * and updates to these attributes are needed either when the data itself\n * changes, or when other data relevant to the calculations change.\n *\n * - First the application registers descriptions of its dynamic vertex\n * attributes using AttributeManager.add().\n * - Then, when any change that affects attributes is detected by the\n * application, the app will call AttributeManager.invalidate().\n * - Finally before it renders, it calls AttributeManager.update() to\n * ensure that attributes are automatically rebuilt if anything has been\n * invalidated.\n *\n * The application provided update functions describe how attributes\n * should be updated from a data array and are expected to traverse\n * that data array (or iterable) and fill in the attribute's typed array.\n *\n * Note that the attribute manager intentionally does not do advanced\n * change detection, but instead makes it easy to build such detection\n * by offering the ability to \"invalidate\" each attribute separately.\n */\n constructor(gl, {id = 'attribute-manager', stats, timeline} = {}) {\n this.id = id;\n this.gl = gl;\n\n this.attributes = {};\n\n this.updateTriggers = {};\n this.accessors = {};\n this.needsRedraw = true;\n\n this.userData = {};\n this.stats = stats;\n\n this.attributeTransitionManager = new AttributeTransitionManager(gl, {\n id: `${id}-transitions`,\n timeline\n });\n\n // For debugging sanity, prevent uninitialized members\n Object.seal(this);\n }\n\n finalize() {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].delete();\n }\n this.attributeTransitionManager.finalize();\n }\n\n // Returns the redraw flag, optionally clearing it.\n // Redraw flag will be set if any attributes attributes changed since\n // flag was last cleared.\n //\n // @param {String} [clearRedrawFlags=false] - whether to clear the flag\n // @return {false|String} - reason a redraw is needed.\n getNeedsRedraw(opts = {clearRedrawFlags: false}) {\n const redraw = this.needsRedraw;\n this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n return redraw && this.id;\n }\n\n // Sets the redraw flag.\n // @param {Boolean} redraw=true\n // @return {AttributeManager} - for chaining\n setNeedsRedraw(redraw = true) {\n this.needsRedraw = true;\n return this;\n }\n\n // Adds attributes\n add(attributes, updaters) {\n this._add(attributes, updaters);\n }\n\n // Adds attributes\n addInstanced(attributes, updaters) {\n this._add(attributes, updaters, {instanced: 1});\n }\n\n /**\n * Removes attributes\n * Takes an array of attribute names and delete them from\n * the attribute map if they exists\n *\n * @example\n * attributeManager.remove(['position']);\n *\n * @param {Object} attributeNameArray - attribute name array (see above)\n */\n remove(attributeNameArray) {\n for (let i = 0; i < attributeNameArray.length; i++) {\n const name = attributeNameArray[i];\n if (this.attributes[name] !== undefined) {\n this.attributes[name].delete();\n delete this.attributes[name];\n }\n }\n }\n\n // Marks an attribute for update\n invalidate(triggerName, dataRange) {\n const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n // For performance tuning\n debug(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n }\n\n invalidateAll(dataRange) {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n }\n // For performance tuning\n debug(TRACE_INVALIDATE, this, 'all');\n }\n\n // Ensure all attribute buffers are updated from props or data.\n update({\n data,\n numInstances,\n startIndices = null,\n transitions,\n props = {},\n buffers = {},\n context = {}\n } = {}) {\n // keep track of whether some attributes are updated\n let updated = false;\n\n debug(TRACE_UPDATE_START, this);\n if (this.stats) {\n this.stats.get('Update Attributes').timeStart();\n }\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n const accessorName = attribute.settings.accessor;\n attribute.startIndices = startIndices;\n\n if (props[attributeName]) {\n log.removed(`props.${attributeName}`, `data.attributes.${attributeName}`)();\n }\n\n if (attribute.setExternalBuffer(buffers[attributeName])) {\n // Step 1: try update attribute directly from external buffers\n } else if (attribute.setBinaryValue(buffers[accessorName], data.startIndices)) {\n // Step 2: try set packed value from external typed array\n } else if (!buffers[accessorName] && attribute.setConstantValue(props[accessorName])) {\n // Step 3: try set constant value from props\n // Note: if buffers[accessorName] is supplied, ignore props[accessorName]\n // This may happen when setBinaryValue falls through to use the auto updater\n } else if (attribute.needsUpdate()) {\n // Step 4: update via updater callback\n updated = true;\n this._updateAttribute({\n attribute,\n numInstances,\n data,\n props,\n context\n });\n }\n\n this.needsRedraw |= attribute.needsRedraw();\n }\n\n if (updated) {\n // Only initiate alloc/update (and logging) if actually needed\n debug(TRACE_UPDATE_END, this, numInstances);\n }\n\n if (this.stats) {\n this.stats.get('Update Attributes').timeEnd();\n }\n\n this.attributeTransitionManager.update({\n attributes: this.attributes,\n numInstances,\n transitions\n });\n }\n\n // Update attribute transition to the current timestamp\n // Returns `true` if any transition is in progress\n updateTransition() {\n const {attributeTransitionManager} = this;\n const transitionUpdated = attributeTransitionManager.run();\n this.needsRedraw = this.needsRedraw || transitionUpdated;\n return transitionUpdated;\n }\n\n /**\n * Returns all attribute descriptors\n * Note: Format matches luma.gl Model/Program.setAttributes()\n * @return {Object} attributes - descriptors\n */\n getAttributes() {\n return this.attributes;\n }\n\n /**\n * Returns changed attribute descriptors\n * This indicates which WebGLBuffers need to be updated\n * @return {Object} attributes - descriptors\n */\n getChangedAttributes(opts = {clearChangedFlags: false}) {\n const {attributes, attributeTransitionManager} = this;\n\n const changedAttributes = Object.assign({}, attributeTransitionManager.getAttributes());\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n changedAttributes[attributeName] = attribute;\n }\n }\n\n return changedAttributes;\n }\n\n // Returns shader attributes\n getShaderAttributes(attributes, excludeAttributes = {}) {\n if (!attributes) {\n attributes = this.getAttributes();\n }\n const shaderAttributes = {};\n for (const attributeName in attributes) {\n if (!excludeAttributes[attributeName]) {\n Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n }\n }\n return shaderAttributes;\n }\n\n // PROTECTED METHODS - Only to be used by collaborating classes, not by apps\n\n // Returns object containing all accessors as keys, with non-null values\n // @return {Object} - accessors object\n getAccessors() {\n return this.updateTriggers;\n }\n\n // PRIVATE METHODS\n\n // Used to register an attribute\n _add(attributes, updaters, extraProps = {}) {\n if (updaters) {\n log.warn('AttributeManager.add({updaters}) - updater map no longer supported')();\n }\n\n const newAttributes = {};\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n\n // Initialize the attribute descriptor, with WebGL and metadata fields\n const newAttribute = this._createAttribute(attributeName, attribute, extraProps);\n\n newAttributes[attributeName] = newAttribute;\n }\n\n Object.assign(this.attributes, newAttributes);\n\n this._mapUpdateTriggersToAttributes();\n }\n /* eslint-enable max-statements */\n\n _createAttribute(name, attribute, extraProps) {\n const props = {\n id: name,\n // Luma fields\n constant: attribute.constant || false,\n isIndexed: attribute.isIndexed || attribute.elements,\n size: (attribute.elements && 1) || attribute.size,\n value: attribute.value || null,\n divisor: attribute.instanced || extraProps.instanced ? 1 : attribute.divisor\n };\n\n return new Attribute(this.gl, Object.assign({}, attribute, props));\n }\n\n // build updateTrigger name to attribute name mapping\n _mapUpdateTriggersToAttributes() {\n const triggers = {};\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n attribute.getUpdateTriggers().forEach(triggerName => {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n triggers[triggerName].push(attributeName);\n });\n }\n\n this.updateTriggers = triggers;\n }\n\n _invalidateTrigger(triggerName, dataRange) {\n const {attributes, updateTriggers} = this;\n const invalidatedAttributes = updateTriggers[triggerName];\n\n if (invalidatedAttributes) {\n invalidatedAttributes.forEach(name => {\n const attribute = attributes[name];\n if (attribute) {\n attribute.setNeedsUpdate(attribute.id, dataRange);\n }\n });\n }\n return invalidatedAttributes;\n }\n\n _updateAttribute(opts) {\n const {attribute, numInstances} = opts;\n debug(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n if (attribute.allocate(numInstances)) {\n debug(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n }\n\n // Calls update on any buffers that need update\n const updated = attribute.updateBuffer(opts);\n if (updated) {\n this.needsRedraw = true;\n debug(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n }\n }\n}\n","import {lerp} from 'math.gl';\nimport Transition from './transition';\n\nexport default class CPUInterpolationTransition extends Transition {\n get value() {\n return this._value;\n }\n\n _onUpdate() {\n const {\n time,\n settings: {fromValue, toValue, duration, easing}\n } = this;\n const t = easing(time / duration);\n this._value = lerp(fromValue, toValue, t);\n }\n}\n","import Transition from './transition';\n\nconst EPSILON = 1e-5;\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number} - previous value\n * @param cur {Number} - current value\n * @param dest {Number} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n const velocity = cur - prev;\n const delta = dest - cur;\n const spring = delta * stiffness;\n const damper = -velocity * damping;\n return spring + damper + velocity + cur;\n}\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number|Array} - previous value\n * @param cur {Number|Array} - current value\n * @param dest {Number|Array} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n if (Array.isArray(dest)) {\n const next = [];\n for (let i = 0; i < dest.length; i++) {\n next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n }\n return next;\n }\n return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\n/*\n * Calculate the distance between two numbers or two vectors\n */\nfunction distance(value1, value2) {\n if (Array.isArray(value1)) {\n let distanceSquare = 0;\n for (let i = 0; i < value1.length; i++) {\n const d = value1[i] - value2[i];\n distanceSquare += d * d;\n }\n return Math.sqrt(distanceSquare);\n }\n return Math.abs(value1 - value2);\n}\n\nexport default class CPUSpringTransition extends Transition {\n get value() {\n return this._currValue;\n }\n\n _onUpdate() {\n // TODO - use timeline\n // const {time} = this;\n\n const {fromValue, toValue, damping, stiffness} = this.settings;\n const {_prevValue = fromValue, _currValue = fromValue} = this;\n let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n const delta = distance(nextValue, toValue);\n const velocity = distance(nextValue, _currValue);\n\n if (delta < EPSILON && velocity < EPSILON) {\n nextValue = toValue;\n this.end();\n }\n\n this._prevValue = _currValue;\n this._currValue = nextValue;\n }\n}\n","import {normalizeTransitionSettings} from './attribute/attribute-transition-utils';\nimport CPUInterpolationTransition from '../transitions/cpu-interpolation-transition';\nimport CPUSpringTransition from '../transitions/cpu-spring-transition';\nimport log from '../utils/log';\n\nconst TRANSITION_TYPES = {\n interpolation: CPUInterpolationTransition,\n spring: CPUSpringTransition\n};\n\nexport default class UniformTransitionManager {\n constructor(timeline) {\n this.transitions = new Map();\n this.timeline = timeline;\n }\n\n get active() {\n return this.transitions.size > 0;\n }\n\n add(key, fromValue, toValue, settings) {\n const {transitions} = this;\n if (transitions.has(key)) {\n const transition = transitions.get(key);\n // start from interrupted position\n fromValue = transition.value;\n this.remove(key);\n }\n\n settings = normalizeTransitionSettings(settings);\n if (!settings) {\n return;\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (!TransitionType) {\n log.error(`unsupported transition type '${settings.type}'`)();\n return;\n }\n const transition = new TransitionType(this.timeline);\n transition.start({\n ...settings,\n fromValue,\n toValue\n });\n transitions.set(key, transition);\n }\n\n remove(key) {\n const {transitions} = this;\n if (transitions.has(key)) {\n transitions.get(key).cancel();\n transitions.delete(key);\n }\n }\n\n update() {\n const propsInTransition = {};\n\n for (const [key, transition] of this.transitions) {\n transition.update();\n propsInTransition[key] = transition.value;\n if (!transition.inProgress) {\n // transition ended\n this.remove(key);\n }\n }\n\n return propsInTransition;\n }\n\n clear() {\n for (const key of this.transitions.keys()) {\n this.remove(key);\n }\n }\n}\n","import {PROP_SYMBOLS} from './constants';\n\nconst {COMPONENT} = PROP_SYMBOLS;\n\nexport function validateProps(props) {\n const propTypes = getPropTypes(props);\n\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {validate} = propType;\n if (validate && !validate(props[propName], propType)) {\n throw new Error(`Invalid prop ${propName}: ${props[propName]}`);\n }\n }\n}\n\n// Returns an object with \"change flags\", either false or strings indicating reason for change\nexport function diffProps(props, oldProps) {\n // First check if any props have changed (ignore props that will be examined separately)\n const propsChangedReason = compareProps({\n newProps: props,\n oldProps,\n propTypes: getPropTypes(props),\n ignoreProps: {data: null, updateTriggers: null, extensions: null, transitions: null}\n });\n\n // Now check if any data related props have changed\n const dataChangedReason = diffDataProps(props, oldProps);\n\n // Check update triggers to determine if any attributes need regeneration\n // Note - if data has changed, all attributes will need regeneration, so skip this step\n let updateTriggersChangedReason = false;\n if (!dataChangedReason) {\n updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n }\n\n return {\n dataChanged: dataChangedReason,\n propsChanged: propsChangedReason,\n updateTriggersChanged: updateTriggersChangedReason,\n extensionsChanged: diffExtensions(props, oldProps),\n transitionsChanged: diffTransitions(props, oldProps)\n };\n}\n\nfunction diffTransitions(props, oldProps) {\n if (!props.transitions) {\n return null;\n }\n const result = {};\n const propTypes = getPropTypes(props);\n\n for (const key in props.transitions) {\n const propType = propTypes[key];\n const type = propType && propType.type;\n const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n result[key] = true;\n }\n }\n return result;\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * @param {Object} opt.oldProps - object with old key/value pairs\n * @param {Object} opt.newProps - object with new key/value pairs\n * @param {Object} opt.ignoreProps={} - object, keys that should not be compared\n * @returns {null|String} - null when values of all keys are strictly equal.\n * if unequal, returns a string explaining what changed.\n */\n/* eslint-disable max-statements, max-depth, complexity */\n/*\n * Note: for better performance, this function assumes that both oldProps and newProps\n inherit the same prototype (defaultProps). That is, if neither object contains own\n property , assume `oldProps.` and `newProps.` are equal.\n */\nexport function compareProps({\n newProps,\n oldProps,\n ignoreProps = {},\n propTypes = {},\n triggerName = 'props'\n} = {}) {\n // shallow equality => deep equality\n if (oldProps === newProps) {\n return null;\n }\n\n // TODO - do we need these checks? Should never happen...\n if (typeof newProps !== 'object' || newProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n if (typeof oldProps !== 'object' || oldProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n // Compare explicitly defined new props against old/default values\n for (const key of Object.keys(newProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in oldProps)) {\n return `${triggerName}.${key} added`;\n }\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n\n // Test if any old props have been dropped\n for (const key of Object.keys(oldProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in newProps)) {\n return `${triggerName}.${key} dropped`;\n }\n if (!Object.hasOwnProperty.call(newProps, key)) {\n // Compare dropped old prop against default value\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n }\n\n return null;\n}\n/* eslint-enable max-statements, max-depth, complexity */\n\n// HELPERS\nfunction comparePropValues(newProp, oldProp, propType) {\n // If prop type has an equal function, invoke it\n let equal = propType && propType.equal;\n if (equal && !equal(newProp, oldProp, propType)) {\n return 'changed deeply';\n }\n\n if (!equal) {\n // If object has an equals function, invoke it\n equal = newProp && oldProp && newProp.equals;\n if (equal && !equal.call(newProp, oldProp)) {\n return 'changed deeply';\n }\n }\n\n if (!equal && oldProp !== newProp) {\n return 'changed shallowly';\n }\n\n return null;\n}\n\n// The comparison of the data prop requires special handling\n// the dataComparator should be used if supplied\nfunction diffDataProps(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n let dataChanged = null;\n // Support optional app defined comparison of data\n const {dataComparator, _dataDiff} = props;\n if (dataComparator) {\n if (!dataComparator(props.data, oldProps.data)) {\n dataChanged = 'Data comparator detected a change';\n }\n // Otherwise, do a shallow equal on props\n } else if (props.data !== oldProps.data) {\n dataChanged = 'A new data container was supplied';\n }\n if (dataChanged && _dataDiff) {\n dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n }\n\n return dataChanged;\n}\n\n// Checks if any update triggers have changed\n// also calls callback to invalidate attributes accordingly.\nfunction diffUpdateTriggers(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n // If the 'all' updateTrigger fires, ignore testing others\n if ('all' in props.updateTriggers) {\n const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n if (diffReason) {\n return {all: true};\n }\n }\n\n const triggerChanged = {};\n let reason = false;\n // If the 'all' updateTrigger didn't fire, need to check all others\n for (const triggerName in props.updateTriggers) {\n if (triggerName !== 'all') {\n const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n if (diffReason) {\n triggerChanged[triggerName] = true;\n reason = triggerChanged;\n }\n }\n }\n\n return reason;\n}\n\n// Returns true if any extensions have changed\nfunction diffExtensions(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n const oldExtensions = oldProps.extensions;\n const {extensions} = props;\n\n if (extensions === oldExtensions) {\n return false;\n }\n if (extensions.length !== oldExtensions.length) {\n return true;\n }\n for (let i = 0; i < extensions.length; i++) {\n if (!extensions[i].equals(oldExtensions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n let newTriggers = props.updateTriggers[triggerName];\n newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n let oldTriggers = oldProps.updateTriggers[triggerName];\n oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n const diffReason = compareProps({\n oldProps: oldTriggers,\n newProps: newTriggers,\n triggerName\n });\n return diffReason;\n}\n\nfunction getPropTypes(props) {\n const layer = props[COMPONENT];\n const LayerType = layer && layer.constructor;\n return LayerType ? LayerType._propTypes : {};\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\n\n/**\n * Deduces numer of elements in a JavaScript container.\n * - Auto-deduction for ES6 containers that define a count() method\n * - Auto-deduction for ES6 containers that define a size member\n * - Auto-deduction for Classic Arrays via the built-in length attribute\n * - Also handles objects, although note that this an O(N) operation\n */\nexport function count(container) {\n if (!isObject(container)) {\n throw new Error(ERR_NOT_OBJECT);\n }\n\n // Check if ES6 collection \"count\" function is available\n if (typeof container.count === 'function') {\n return container.count();\n }\n\n // Check if ES6 collection \"size\" attribute is set\n if (Number.isFinite(container.size)) {\n return container.size;\n }\n\n // Check if array length attribute is set\n // Note: checking this last since some ES6 collections (Immutable.js)\n // emit profuse warnings when trying to access `length` attribute\n if (Number.isFinite(container.length)) {\n return container.length;\n }\n\n // Note that getting the count of an object is O(N)\n if (isPlainObject(container)) {\n return Object.keys(container).length;\n }\n\n throw new Error(ERR_NOT_CONTAINER);\n}\n\n/**\n * Checks if argument is a plain object (not a class or array etc)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a plain JavaScript object\n */\nfunction isPlainObject(value) {\n return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\n/**\n * Checks if argument is an indexable object (not a primitive value, nor null)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a JavaScript object\n */\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Merge two luma.gl shader descriptors\nexport function mergeShaders(target, source) {\n if (!source) {\n return target;\n }\n const result = Object.assign({}, target, source);\n\n if ('defines' in source) {\n result.defines = Object.assign({}, target.defines, source.defines);\n }\n if ('modules' in source) {\n result.modules = (target.modules || []).concat(source.modules);\n\n // Hack: prject32 and project64 cannot co-exist\n if (source.modules.some(module => module.name === 'project64')) {\n const index = result.modules.findIndex(module => module.name === 'project32');\n if (index >= 0) {\n result.modules.splice(index, 1);\n }\n }\n }\n if ('inject' in source) {\n if (!target.inject) {\n result.inject = source.inject;\n } else {\n const mergedInjection = {...target.inject};\n for (const key in source.inject) {\n mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n }\n result.inject = mergedInjection;\n }\n }\n return result;\n}\n","/**\n * Projection utils\n * TODO: move to Viewport class?\n */\nimport {COORDINATE_SYSTEM} from '../../lib/constants';\nimport {LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD} from './viewport-uniforms';\n\nimport * as vec4 from 'gl-matrix/vec4';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {addMetersToLngLat} from '@math.gl/web-mercator';\n\n// In project.glsl, offset modes calculate z differently from LNG_LAT mode.\n// offset modes apply the y adjustment (unitsPerMeter2) when projecting z\n// LNG_LAT mode only use the linear scale.\nfunction lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {\n const [longitude, latitude, z = 0] = lngLatZ;\n const [X, Y] = viewport.projectFlat(lngLatZ);\n const distanceScales = viewport.getDistanceScales(offsetMode && [longitude, latitude]);\n const Z = z * distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n}\n\nfunction normalizeParameters(opts) {\n const normalizedParams = Object.assign({}, opts);\n\n let {coordinateSystem} = opts;\n const {viewport, coordinateOrigin, fromCoordinateSystem, fromCoordinateOrigin} = opts;\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n if (fromCoordinateSystem === undefined) {\n normalizedParams.fromCoordinateSystem = coordinateSystem;\n }\n if (fromCoordinateOrigin === undefined) {\n normalizedParams.fromCoordinateOrigin = coordinateOrigin;\n }\n\n if (\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT &&\n viewport.zoom >= LNGLAT_AUTO_OFFSET_ZOOM_THRESHOLD\n ) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT_OFFSETS;\n normalizedParams.coordinateOrigin = [\n Math.fround(viewport.longitude),\n Math.fround(viewport.latitude)\n ];\n }\n normalizedParams.coordinateSystem = coordinateSystem;\n\n return normalizedParams;\n}\n\nexport function getWorldPosition(\n position,\n {viewport, modelMatrix, coordinateSystem, coordinateOrigin, offsetMode}\n) {\n let [x, y, z] = position;\n\n if (modelMatrix) {\n [x, y, z] = vec4.transformMat4([], [x, y, z, 1.0], modelMatrix);\n }\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT:\n return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n return lngLatZToWorldPosition(\n [x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)],\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.METER_OFFSETS:\n return lngLatZToWorldPosition(\n addMetersToLngLat(coordinateOrigin, [x, y, z]),\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return viewport.projectPosition([x, y, z]);\n }\n}\n\n/**\n * Equivalent to project_position in project.glsl\n * projects a user supplied position to world position directly with or without\n * a reference coordinate system\n * @param {array} position - [x, y, z]\n * @param {object} params\n * @param {Viewport} params.viewport - the current viewport\n * @param {number} params.coordinateSystem - the reference coordinate system used\n * align world position\n * @param {array} params.coordinateOrigin - the reference coordinate origin used\n * to align world position\n * @param {Matrix4} [params.modelMatrix] - the model matrix of the supplied position\n * @param {number} [params.fromCoordinateSystem] - the coordinate system that the\n * supplied position is in. Default to the same as `coordinateSystem`.\n * @param {array} [params.fromCoordinateOrigin] - the coordinate origin that the\n * supplied position is in. Default to the same as `coordinateOrigin`.\n */\nexport function projectPosition(position, params) {\n const {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n // optional\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n } = normalizeParameters(params);\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n case COORDINATE_SYSTEM.METER_OFFSETS: {\n const worldPosition = getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode: true\n });\n const originWorld = lngLatZToWorldPosition(coordinateOrigin, viewport, true);\n vec3.sub(worldPosition, worldPosition, originWorld);\n\n return worldPosition;\n }\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode: false\n });\n }\n}\n","const TYPE_DEFINITIONS = {\n boolean: {\n validate(value, propType) {\n return true;\n },\n equal(value1, value2, propType) {\n return Boolean(value1) === Boolean(value2);\n }\n },\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n color: {\n validate(value, propType) {\n return (\n (propType.optional && !value) ||\n (isArray(value) && (value.length === 3 || value.length === 4))\n );\n },\n equal(value1, value2, propType) {\n return arrayEqual(value1, value2);\n }\n },\n accessor: {\n validate(value, propType) {\n const valueType = getTypeOf(value);\n return valueType === 'function' || valueType === getTypeOf(propType.value);\n },\n equal(value1, value2, propType) {\n if (typeof value2 === 'function') {\n return true;\n }\n return arrayEqual(value1, value2);\n }\n },\n array: {\n validate(value, propType) {\n return (propType.optional && !value) || isArray(value);\n },\n equal(value1, value2, propType) {\n return propType.compare ? arrayEqual(value1, value2) : value1 === value2;\n }\n },\n function: {\n validate(value, propType) {\n return (propType.optional && !value) || typeof value === 'function';\n },\n equal(value1, value2, propType) {\n return !propType.compare || value1 === value2;\n }\n }\n};\n\nfunction arrayEqual(array1, array2) {\n if (array1 === array2) {\n return true;\n }\n if (!isArray(array1) || !isArray(array2)) {\n return false;\n }\n const len = array1.length;\n if (len !== array2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n const defaultProps = {};\n const deprecatedProps = {};\n\n for (const [propName, propDef] of Object.entries(propDefs)) {\n if (propDef && propDef.deprecatedFor) {\n deprecatedProps[propName] = Array.isArray(propDef.deprecatedFor)\n ? propDef.deprecatedFor\n : [propDef.deprecatedFor];\n } else {\n const propType = parsePropType(propName, propDef);\n propTypes[propName] = propType;\n defaultProps[propName] = propType.value;\n }\n }\n return {propTypes, defaultProps, deprecatedProps};\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(name, propDef) {\n switch (getTypeOf(propDef)) {\n case 'object':\n return normalizePropDefinition(name, propDef);\n\n case 'array':\n return normalizePropDefinition(name, {type: 'array', value: propDef, compare: false});\n\n case 'boolean':\n return normalizePropDefinition(name, {type: 'boolean', value: propDef});\n\n case 'number':\n return normalizePropDefinition(name, {type: 'number', value: propDef});\n\n case 'function':\n return normalizePropDefinition(name, {type: 'function', value: propDef, compare: true});\n // return guessFunctionType(name, propDef);\n\n default:\n return {name, type: 'unknown', value: propDef};\n }\n}\n\nfunction normalizePropDefinition(name, propDef) {\n if (!('type' in propDef)) {\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {name, type: 'object', value: propDef};\n }\n return Object.assign({name, type: getTypeOf(propDef.value)}, propDef);\n }\n return Object.assign({name}, TYPE_DEFINITIONS[propDef.type], propDef);\n}\n\nfunction isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (isArray(value)) {\n return 'array';\n }\n if (value === null) {\n return 'null';\n }\n return typeof value;\n}\n","import log from '../utils/log';\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {parsePropTypes} from './prop-types';\nimport {PROP_SYMBOLS} from './constants';\n\nconst {COMPONENT, ASYNC_ORIGINAL, ASYNC_RESOLVED, ASYNC_DEFAULTS} = PROP_SYMBOLS;\n\n// Create a property object\nexport function createProps() {\n const component = this; // eslint-disable-line\n\n // Get default prop object (a prototype chain for now)\n const propsPrototype = getPropsPrototype(component.constructor);\n\n // Create a new prop object with default props object in prototype chain\n const propsInstance = Object.create(propsPrototype);\n\n // Props need a back pointer to the owning component\n propsInstance[COMPONENT] = component;\n // The supplied (original) values for those async props that are set to url strings or Promises.\n // In this case, the actual (i.e. resolved) values are looked up from component.internalState\n propsInstance[ASYNC_ORIGINAL] = {};\n // Note: the actual (resolved) values for props that are NOT set to urls or Promises.\n // in this case the values are served directly from this map\n propsInstance[ASYNC_RESOLVED] = {};\n\n // \"Copy\" all sync props\n for (let i = 0; i < arguments.length; ++i) {\n const props = arguments[i];\n // Do not use Object.assign here to avoid Symbols in props overwriting our private fields\n // This might happen if one of the arguments is another props instance\n for (const key in props) {\n propsInstance[key] = props[key];\n }\n }\n\n // Props must be immutable\n Object.freeze(propsInstance);\n\n return propsInstance;\n}\n\n// Return precalculated defaultProps and propType objects if available\n// build them if needed\nfunction getPropsPrototype(componentClass) {\n const defaultProps = getOwnProperty(componentClass, '_mergedDefaultProps');\n if (!defaultProps) {\n createPropsPrototypeAndTypes(componentClass);\n return componentClass._mergedDefaultProps;\n }\n return defaultProps;\n}\n\n// Build defaultProps and propType objects by walking component prototype chain\nfunction createPropsPrototypeAndTypes(componentClass) {\n const parent = componentClass.prototype;\n if (!parent) {\n return;\n }\n\n const parentClass = Object.getPrototypeOf(componentClass);\n const parentDefaultProps = getPropsPrototype(parentClass);\n\n // Parse propTypes from Component.defaultProps\n const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n const componentPropDefs = parsePropTypes(componentDefaultProps);\n\n // Create any necessary property descriptors and create the default prop object\n // Assign merged default props\n const defaultProps = createPropsPrototype(\n componentPropDefs.defaultProps,\n parentDefaultProps,\n componentClass\n );\n\n // Create a merged type object\n const propTypes = Object.assign({}, parentClass._propTypes, componentPropDefs.propTypes);\n // Add getters/setters for async props\n addAsyncPropsToPropPrototype(defaultProps, propTypes);\n\n // Create a map for prop whose default value is a callback\n const deprecatedProps = Object.assign(\n {},\n parentClass._deprecatedProps,\n componentPropDefs.deprecatedProps\n );\n // Add setters for deprecated props\n addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n\n // Store the precalculated props\n componentClass._mergedDefaultProps = defaultProps;\n componentClass._propTypes = propTypes;\n componentClass._deprecatedProps = deprecatedProps;\n}\n\n// Builds a pre-merged default props object that component props can inherit from\nfunction createPropsPrototype(props, parentProps, componentClass) {\n const defaultProps = Object.create(null);\n\n Object.assign(defaultProps, parentProps, props);\n\n // Avoid freezing `id` prop\n const id = getComponentName(componentClass);\n delete props.id;\n\n Object.defineProperties(defaultProps, {\n // `id` is treated specially because layer might need to override it\n id: {\n writable: true,\n value: id\n }\n });\n\n return defaultProps;\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n for (const propName in deprecatedProps) {\n /* eslint-disable accessor-pairs */\n Object.defineProperty(defaultProps, propName, {\n enumerable: false,\n set(newValue) {\n const nameStr = `${this.id}: ${propName}`;\n\n for (const newPropName of deprecatedProps[propName]) {\n if (!hasOwnProperty(this, newPropName)) {\n this[newPropName] = newValue;\n }\n }\n\n log.deprecated(nameStr, deprecatedProps[propName].join('/'))();\n }\n });\n /* eslint-enable accessor-pairs */\n }\n}\n\n// Create descriptors for overridable props\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n const defaultValues = {};\n\n const descriptors = {};\n\n // Move async props into shadow values\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {name, value} = propType;\n\n // Note: async is ES7 keyword, can't destructure\n if (propType.async) {\n defaultValues[name] = value;\n descriptors[name] = getDescriptorForAsyncProp(name, value);\n }\n }\n\n // Default \"resolved\" values for async props, returned if value not yet resolved/set.\n defaultProps[ASYNC_DEFAULTS] = defaultValues;\n // Shadowed object, just to make sure \"early indexing\" into the instance does not fail\n defaultProps[ASYNC_ORIGINAL] = {};\n\n Object.defineProperties(defaultProps, descriptors);\n}\n\n// Helper: Configures getter and setter for one async prop\nfunction getDescriptorForAsyncProp(name) {\n return {\n enumerable: true,\n // Save the provided value for async props in a special map\n set(newValue) {\n if (\n typeof newValue === 'string' ||\n newValue instanceof Promise ||\n isAsyncIterable(newValue)\n ) {\n this[ASYNC_ORIGINAL][name] = newValue;\n } else {\n this[ASYNC_RESOLVED][name] = newValue;\n }\n },\n // Only the component's state knows the true value of async prop\n get() {\n if (this[ASYNC_RESOLVED]) {\n // Prop value isn't async, so just return it\n if (name in this[ASYNC_RESOLVED]) {\n const value = this[ASYNC_RESOLVED][name];\n\n // Special handling - components expect null `data` prop expects to be replaced with `[]`\n if (name === 'data') {\n return value || this[ASYNC_DEFAULTS][name];\n }\n\n return value;\n }\n\n if (name in this[ASYNC_ORIGINAL]) {\n // It's an async prop value: look into component state\n const state = this[COMPONENT] && this[COMPONENT].internalState;\n if (state && state.hasAsyncProp(name)) {\n return state.getAsyncProp(name);\n }\n }\n }\n\n // the prop is not supplied, or\n // component not yet initialized/matched, return the component's default value for the prop\n return this[ASYNC_DEFAULTS][name];\n }\n };\n}\n\n// HELPER METHODS\n\nfunction hasOwnProperty(object, prop) {\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\n// Constructors have their super class constructors as prototypes\nfunction getOwnProperty(object, prop) {\n return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n const componentName =\n getOwnProperty(componentClass, 'layerName') || getOwnProperty(componentClass, 'componentName');\n if (!componentName) {\n log.once(0, `${componentClass.name}.componentName not specified`)();\n }\n return componentName || componentClass.name;\n}\n","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError(\"Object is not async iterable\");\n}","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../utils/log';\nimport assert from '../utils/assert';\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {PROP_SYMBOLS} from './constants';\nconst {ASYNC_ORIGINAL, ASYNC_RESOLVED, ASYNC_DEFAULTS} = PROP_SYMBOLS;\n\nconst EMPTY_PROPS = Object.freeze({});\n\nexport default class ComponentState {\n constructor(component = null) {\n this.component = component;\n this.asyncProps = {}; // Prop values that the layer sees\n this.onAsyncPropUpdated = () => {};\n this.oldProps = EMPTY_PROPS; // Last props before update\n this.oldAsyncProps = null; // Last props before update, with async values copied.\n }\n\n getOldProps() {\n return this.oldAsyncProps || this.oldProps;\n }\n\n resetOldProps() {\n this.oldAsyncProps = null;\n this.oldProps = this.component.props;\n }\n\n // Whenever async props are changing, we need to make a copy of oldProps\n // otherwise the prop rewriting will affect the value both in props and oldProps.\n // While the copy is relatively expensive, this only happens on load completion.\n freezeAsyncOldProps() {\n if (!this.oldAsyncProps) {\n // Make sure oldProps is set\n this.oldProps = this.oldProps || this.component.props;\n\n // 1. inherit all synchronous props from oldProps\n // 2. reconfigure the async prop descriptors to fixed values\n this.oldAsyncProps = Object.create(this.oldProps);\n for (const propName in this.asyncProps) {\n Object.defineProperty(this.oldAsyncProps, propName, {\n enumerable: true,\n value: this.oldProps[propName]\n });\n }\n }\n }\n\n // ASYNC PROP HANDLING\n //\n\n // Checks if a prop is overridden\n hasAsyncProp(propName) {\n return propName in this.asyncProps;\n }\n\n // Returns value of an overriden prop\n getAsyncProp(propName) {\n const asyncProp = this.asyncProps[propName];\n return asyncProp && asyncProp.resolvedValue;\n }\n\n isAsyncPropLoading(propName) {\n const asyncProp = this.asyncProps[propName];\n return Boolean(\n asyncProp &&\n asyncProp.pendingLoadCount > 0 &&\n asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount\n );\n }\n\n // Updates all async/overridden props (when new props come in)\n // Checks if urls have changed, starts loading, or removes override\n setAsyncProps(props) {\n // NOTE: prop param and default values are only support for testing\n const resolvedValues = props[ASYNC_RESOLVED] || {};\n const originalValues = props[ASYNC_ORIGINAL] || props;\n const defaultValues = props[ASYNC_DEFAULTS] || {};\n\n // TODO - use async props from the layer's prop types\n for (const propName in resolvedValues) {\n const value = resolvedValues[propName];\n this._createAsyncPropData(propName, value, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n\n for (const propName in originalValues) {\n const value = originalValues[propName];\n // Makes sure a record exists for this prop\n this._createAsyncPropData(propName, value, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n }\n\n // Intercept strings (URLs) and Promises and activates loading and prop rewriting\n _updateAsyncProp(propName, value) {\n if (!this._didAsyncInputValueChange(propName, value)) {\n return;\n }\n\n // interpret value string as url and start a new load tracked by a promise\n if (typeof value === 'string') {\n const fetch = this.layer && this.layer.props.fetch;\n const url = value;\n if (fetch) {\n value = fetch(url, {propName, layer: this.layer});\n }\n }\n\n // interprets promise and track the \"loading\"\n if (value instanceof Promise) {\n this._watchPromise(propName, value);\n return;\n }\n\n if (isAsyncIterable(value)) {\n this._resolveAsyncIterable(propName, value);\n return;\n }\n\n // else, normal, non-async value. Just store value for now\n this._setPropValue(propName, value);\n }\n\n // Checks if an input value actually changed (to avoid reloading/rewatching promises/urls)\n _didAsyncInputValueChange(propName, value) {\n const asyncProp = this.asyncProps[propName];\n if (value === asyncProp.lastValue) {\n return false;\n }\n asyncProp.lastValue = value;\n return true;\n }\n\n // Set normal, non-async value\n _setPropValue(propName, value) {\n const asyncProp = this.asyncProps[propName];\n asyncProp.value = value;\n asyncProp.resolvedValue = value;\n asyncProp.pendingLoadCount++;\n asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n }\n\n // Set a just resolved async value, calling onAsyncPropUpdates if value changes asynchronously\n _setAsyncPropValue(propName, value, loadCount) {\n // Only update if loadCount is larger or equal to resolvedLoadCount\n // otherwise a more recent load has already completed\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && loadCount >= asyncProp.resolvedLoadCount) {\n assert(value !== undefined);\n\n // A chance to copy old props before updating\n this.freezeAsyncOldProps();\n\n asyncProp.resolvedValue = value;\n asyncProp.resolvedLoadCount = loadCount;\n\n // Call callback to inform listener\n this.onAsyncPropUpdated(propName, value);\n }\n }\n\n // Tracks a promise, sets the prop when loaded, handles load count\n _watchPromise(propName, promise) {\n const asyncProp = this.asyncProps[propName];\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n promise\n .then(data => {\n data = this._postProcessValue(propName, data);\n this._setAsyncPropValue(propName, data, loadCount);\n\n const onDataLoad = this.layer && this.layer.props.onDataLoad;\n if (propName === 'data' && onDataLoad) {\n onDataLoad(data, {propName, layer: this.layer});\n }\n })\n .catch(error => log.error(error)());\n }\n\n async _resolveAsyncIterable(propName, iterable) {\n if (propName !== 'data') {\n // we only support data as async iterable\n this._setPropValue(propName, iterable);\n }\n\n const asyncProp = this.asyncProps[propName];\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n let data = [];\n let count = 0;\n\n for await (const chunk of iterable) {\n data = this._postProcessValue(propName, chunk, data);\n\n // Used by the default _dataDiff function\n Object.defineProperty(data, '__diff', {\n enumerable: false,\n value: [{startRow: count, endRow: data.length}]\n });\n\n count = data.length;\n this._setAsyncPropValue(propName, data, loadCount);\n }\n\n const onDataLoad = this.layer && this.layer.props.onDataLoad;\n if (onDataLoad) {\n onDataLoad(data, {propName, layer: this.layer});\n }\n }\n\n // Give the app a chance to post process the loaded data\n _postProcessValue(propName, value, previousValue) {\n const {dataTransform} = this.component ? this.component.props : {};\n if (propName !== 'data') {\n return value;\n }\n if (dataTransform) {\n return dataTransform(value, previousValue);\n }\n // previousValue is assigned if loaded with async iterator\n return previousValue ? previousValue.concat(value) : value;\n }\n\n // Creating an asyncProp record if needed\n _createAsyncPropData(propName, value, defaultValue) {\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n // assert(defaultValue !== undefined);\n this.asyncProps[propName] = {\n lastValue: null, // Supplied prop value (can be url/promise, not visible to layer)\n resolvedValue: defaultValue, // Resolved prop value (valid data, can be \"shown\" to layer)\n pendingLoadCount: 0, // How many loads have been issued\n resolvedLoadCount: 0 // Latest resolved load, (earlier loads will be ignored)\n };\n }\n }\n}\n","import {LIFECYCLE} from '../lifecycle/constants';\nimport {createProps} from './create-props';\nimport {PROP_SYMBOLS} from './constants';\nconst {ASYNC_ORIGINAL, ASYNC_RESOLVED, ASYNC_DEFAULTS} = PROP_SYMBOLS;\nimport ComponentState from './component-state';\n\nconst defaultProps = {};\n\nlet counter = 0;\n\nexport default class Component {\n constructor(/* ...propObjects */) {\n // Merge supplied props with default props and freeze them.\n /* eslint-disable prefer-spread */\n this.props = createProps.apply(this, arguments);\n /* eslint-enable prefer-spread */\n\n // Define all members before layer is sealed\n this.id = this.props.id; // The layer's id, used for matching with layers from last render cycle\n this.count = counter++; // Keep track of how many layer instances you are generating\n this.lifecycle = LIFECYCLE.NO_STATE; // Helps track and debug the life cycle of the layers\n this.parent = null; // reference to the composite layer parent that rendered this layer\n this.context = null; // Will reference layer manager's context, contains state shared by layers\n this.state = null; // Will be set to the shared layer state object during layer matching\n this.internalState = null;\n\n // Seal the layer\n Object.seal(this);\n }\n\n // clone this layer with modified props\n clone(newProps) {\n const {props} = this;\n\n // Async props cannot be copied with Object.assign, copy them separately\n const asyncProps = {};\n\n // See async props definition in create-props.js\n for (const key in props[ASYNC_DEFAULTS]) {\n if (key in props[ASYNC_RESOLVED]) {\n asyncProps[key] = props[ASYNC_RESOLVED][key];\n } else if (key in props[ASYNC_ORIGINAL]) {\n asyncProps[key] = props[ASYNC_ORIGINAL][key];\n }\n }\n\n // Some custom layer implementation may not support multiple arguments in the constructor\n return new this.constructor(Object.assign({}, props, asyncProps, newProps));\n }\n\n get stats() {\n return this.internalState.stats;\n }\n\n // PROTECTED METHODS, override in subclass\n\n _initState() {\n this.internalState = new ComponentState({});\n }\n}\n\nComponent.componentName = 'Component';\nComponent.defaultProps = defaultProps;\n","import ComponentState from '../lifecycle/component-state';\n\nexport default class LayerState extends ComponentState {\n constructor({attributeManager, layer}) {\n super(layer);\n this.attributeManager = attributeManager;\n this.model = null;\n this.needsRedraw = true;\n this.subLayers = null; // reference to sublayers rendered in a previous cycle\n }\n\n get layer() {\n return this.component;\n }\n\n set layer(layer) {\n this.component = layer;\n }\n}\n","/* global File, Blob, Response */\n\nconst isBoolean = x => typeof x === 'boolean';\nconst isFunction = x => typeof x === 'function';\nconst isObject = x => x !== null && typeof x === 'object';\n\nexport const isPromise = x => isObject(x) && isFunction(x.then);\n\nexport const isIterable = x => x && typeof x[Symbol.iterator] === 'function';\n\nexport const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\n\nexport const isIterator = x => x && isFunction(x.next);\n\nexport const isFetchResponse = x =>\n (typeof Response !== 'undefined' && x instanceof Response) || (x.arrayBuffer && x.text && x.json);\n\nexport const isFile = x => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\nexport const isFileReadable = x => isFile(x) || isBlob(x); // Blob & File are FileReader compatible\n\nexport const isWritableDOMStream = x => {\n return isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\n};\n\nexport const isReadableDOMStream = x => {\n return (\n isObject(x) &&\n isFunction(x.tee) &&\n isFunction(x.cancel) &&\n isFunction(x.pipeTo) &&\n isFunction(x.getReader)\n );\n};\n\nexport const isWritableNodeStream = x => {\n return isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\n};\n\nexport const isReadableNodeStream = x => {\n return isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n};\n\nexport const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\n\nexport const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n","/* global FileReader, Headers */\nimport {assert} from '@loaders.gl/loader-utils';\n\n// File reader fetch \"polyfill\" for the browser\nclass FileReadableResponse {\n constructor(fileOrBlob) {\n this._fileOrBlob = fileOrBlob;\n this.bodyUsed = false;\n }\n\n get headers() {\n return new Headers({\n 'Content-Length': this._fileOrBlob.size,\n 'Content-Type': this._fileOrBlob.type\n });\n }\n\n get ok() {\n return true; // Blob & File objects are already in memory\n }\n\n get status() {\n return 200; // Blob & File objects are already in memory\n }\n\n get url() {\n // Note: This is just the file name without path information\n // Note: File has `name` field but the Blob baseclass does not\n return this._fileOrBlob.name || '';\n }\n\n async arrayBuffer() {\n const {reader, promise} = this._getFileReader();\n reader.readAsArrayBuffer(this._fileOrBlob);\n return promise;\n }\n\n async text() {\n const {reader, promise} = this._getFileReader();\n reader.readAsText(this._fileOrBlob);\n return promise;\n }\n\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n // TODO - body, how to support stream?\n // Can this be portable?\n // eslint-disable-next-line\n // https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams#Creating_your_own_custom_readable_stream\n // get body() {\n // assert(false);\n // }\n\n // PRIVATE\n\n _getFileReader() {\n assert(!this.bodyUsed);\n this.bodyUsed = true;\n\n let reader;\n const promise = new Promise((resolve, reject) => {\n try {\n reader = new FileReader();\n reader.onerror = error => reject(new Error(error));\n reader.onabort = () => reject(new Error('Read aborted.'));\n reader.onload = () => resolve(reader.result);\n } catch (error) {\n reject(error);\n }\n });\n return {reader, promise};\n }\n}\n\n// @param {File|Blob} file HTML File or Blob object to read as string\n// @returns {Promise.string} Resolves to a string containing file contents\nexport default function fetchFileReadable(fileOrBlob, options) {\n return Promise.resolve(new FileReadableResponse(fileOrBlob, options));\n}\n","/* global fetch */\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport {isFileReadable} from '../../javascript-utils/is-type';\nimport fetchFileReadable from './fetch-file.browser';\n\n// As fetch but respects pathPrefix and file aliases\n// Reads file data from:\n// * data urls\n// * http/http urls\n// * File/Blob objects\nexport async function fetchFile(url, options) {\n if (isFileReadable(url)) {\n return fetchFileReadable(url, options);\n }\n url = resolvePath(url);\n // TODO - SUPPORT reading from `File` objects\n return fetch(url, options);\n}\n","// __VERSION__ is injected by babel-plugin-version-inline\n/* global __VERSION__ */\nimport assert from './env-utils/assert';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// Returns `true` if the two versions are compatible\nexport function validateLoaderVersion(loader, coreVersion = VERSION) {\n assert(loader, 'no loader provided');\n\n let loaderVersion = loader.version;\n if (!coreVersion || !loaderVersion) {\n return;\n }\n\n coreVersion = parseVersion(coreVersion);\n loaderVersion = parseVersion(loaderVersion);\n\n // TODO enable when fix the __version__ injection\n // assert(\n // coreVersion.major === loaderVersion.major && coreVersion.minor <= loaderVersion.minor,\n // `loader: ${loader.name} is not compatible. ${coreVersion.major}.${\n // coreVersion.minor\n // }+ is required.`\n // );\n}\n\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {major: parts[0], minor: parts[1]};\n}\n","// probe.gl Log compatible loggers\n\n// Logs nothing\nexport class NullLog {\n log() {\n return _ => {};\n }\n info() {\n return _ => {};\n }\n warn() {\n return _ => {};\n }\n error() {\n return _ => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n","import {DEFAULT_LOADER_OPTIONS} from '../constants';\nimport {NullLog} from './loggers';\n\nconst isPureObject = value =>\n value && typeof value === 'object' && value.constructor === {}.constructor;\n\nlet globalOptions = {...DEFAULT_LOADER_OPTIONS};\n\n// Set global loader options\nexport function setGlobalOptions(options) {\n globalOptions = mergeOptions(globalOptions, options);\n}\n\n// Merges options with global opts and loader defaults, also injects baseUri\nexport function mergeOptions(loader, options, url) {\n const loaderDefaultOptions =\n loader && (loader.DEFAULT_LOADER_OPTIONS || loader.defaultOptions || loader.options || {});\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, globalOptions);\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n// Harvest information from the url\n// TODO - baseUri should be a directory, i.e. remove file component from baseUri\n// TODO - extract extension?\n// TODO - extract query parameters?\n// TODO - should these be injected on context instead of options?\nfunction addUrlOptions(options, url) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","import AwaitValue from \"./AwaitValue\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nif (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n}\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","export async function checkFetchResponseStatus(response) {\n if (!response.ok) {\n let errorMessage = `fetch failed ${response.status} `;\n try {\n const text = await response.text();\n errorMessage += text;\n } catch (error) {\n // ignore error\n }\n throw new Error(errorMessage);\n }\n}\n\nexport function checkFetchResponseStatusSync(response) {\n if (!response.ok) {\n throw new Error(`fetch failed ${response.status}`);\n }\n}\n","/* global TextDecoder */\nimport {\n isFetchResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isFileReadable\n} from '../../javascript-utils/is-type';\nimport {getStreamIterator} from '../../javascript-utils/stream-utils';\nimport fetchFileReadable from '../fetch/fetch-file.browser';\nimport {checkFetchResponseStatus, checkFetchResponseStatusSync} from './check-errors';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// Extract a URL from `parse` arguments if possible\n// If a fetch Response object or File/Blob were passed in get URL from those objects\nexport function getUrlFromData(data, url) {\n if (isFetchResponse(data)) {\n url = url || data.url;\n } else if (isFileReadable(url)) {\n // File or Blob\n url = url.name;\n }\n // Strip any query string\n return typeof url === 'string' ? url.replace(/\\?.*/, '') : url;\n}\n\nexport function getArrayBufferOrStringFromDataSync(data, loader) {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n const arrayBuffer = data.buffer || data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(data, loader) {\n // Resolve any promise\n data = await data;\n\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data, loader);\n }\n\n // Blobs and files are FileReader compatible\n if (isFileReadable(data)) {\n data = await fetchFileReadable(data);\n }\n\n if (isFetchResponse(data)) {\n const response = data;\n await checkFetchResponseStatus(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n // if (isIterable(data) || isAsyncIterable(data)) {\n // }\n\n // Assume arrayBuffer iterator - attempt to concatenate\n // return concatenateAsyncIterator(data);\n\n throw new Error(ERR_DATA);\n}\n\nexport function getAsyncIteratorFromData(data) {\n if (isIterator(data)) {\n return data;\n }\n\n // TODO: Our fetchFileReaderObject response does not yet support a body stream\n if (isFetchResponse(data) && data.body) {\n // Note Since this function is not async, we currently can't load error message, just status\n checkFetchResponseStatusSync(data);\n return getStreamIterator(data.body);\n }\n\n if (isReadableStream(data)) {\n return getStreamIterator(data);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIteratorFromData(data);\n}\n\nexport function getIteratorFromData(data) {\n // generate an iterator that emits a single chunk\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer || data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n","// \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n// The context will inject core methods like `parse` and contain information\n// about loaders and options passed in to the top-level `parse` call.\nimport {fetchFile} from '../fetch/fetch-file';\n\nexport function getLoaderContext(context, options, previousContext) {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (previousContext) {\n return previousContext;\n }\n context = {\n // TODO - determine how to inject fetch, fetch in options etc\n fetch: context.fetch || fetchFile,\n ...context\n };\n\n // Recursive loading does not use single loader\n if (!Array.isArray(context.loaders)) {\n context.loaders = null;\n }\n\n return context;\n}\n\nexport function getLoaders(loaders, context) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n","/* global TextEncoder */\nimport {assert} from '@loaders.gl/loader-utils';\nimport {toArrayBuffer as bufferToArrayBuffer} from '../node/utils/to-array-buffer.node';\n\nexport function toArrayBuffer(data) {\n if (bufferToArrayBuffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n data = bufferToArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n return assert(false);\n}\n\n// export function blobToArrayBuffer(blob) {\n// return new Promise((resolve, reject) => {\n// let arrayBuffer;\n// const fileReader = new FileReader();\n// fileReader.onload = event => {\n// arrayBuffer = event.target.result;\n// };\n// fileReader.onloadend = event => resolve(arrayBuffer);\n// fileReader.onerror = reject;\n// fileReader.readAsArrayBuffer(blob);\n// });\n// }\n","/* global URL, Blob */\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst workerURLCache = new Map();\n\n// Creates a URL from worker source that can be used to create `Worker` instances\n// Packages (and then caches) the result of `webworkify` as an \"Object URL\"\nexport function getWorkerURL(workerSource, workerName = 'Worker') {\n assert(typeof workerSource === 'string', 'worker source');\n\n // CASE: url(./worker.js)\n // This pattern is used to differentiate worker urls from worker source code\n // Load from url is needed for testing, when using Webpack & webworker target\n if (workerSource.startsWith('url(') && workerSource.endsWith(')')) {\n const workerUrl = workerSource.match(/^url\\((.*)\\)$/)[1];\n\n // A local script url, we can use it to initialize a Worker directly\n if (workerUrl && !workerUrl.startsWith('http')) {\n return workerUrl;\n }\n\n // Per spec, worker cannot be initialized with a script from a different origin\n // However a local worker script can still import scripts from other origins,\n // so we simply build a wrapper script\n workerSource = buildScript(workerUrl);\n }\n\n let workerURL = workerURLCache.get(workerSource);\n\n if (!workerURL) {\n // NOTE: webworkify was previously used\n // const blob = webworkify(workerSource, {bare: true});\n const blob = new Blob([workerSource], {type: 'application/javascript'});\n workerURL = URL.createObjectURL(blob);\n workerURLCache.set(workerSource, workerURL);\n }\n\n return workerURL;\n}\n\n// Only use trusted sources!\nfunction buildScript(workerUrl) {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n}`;\n}\n","// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n\n/* global MessagePort, ImageBitmap, OffscreenCanvas */\n\nfunction isTransferable(object) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer || object.buffer instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== `undefined` && object instanceof ImageBitmap) {\n return true;\n }\n if (typeof OffscreenCanvas !== `undefined` && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\nexport function getTransferList(object, recursive = true, transfers = []) {\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfers.push(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfers.push(object.buffer);\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfers);\n }\n }\n return transfers;\n}\n","/* global Worker */\nimport {getWorkerURL} from './get-worker-url';\nimport {getTransferList} from './get-transfer-list';\n\nlet count = 0;\n\n// By default resolves to the first message the worker sends back\nfunction defaultOnMessage({data, resolve}) {\n resolve(data);\n}\n\nexport default class WorkerThread {\n constructor({source, name = `web-worker-${count++}`, onMessage}) {\n const url = getWorkerURL(source, name);\n this.worker = new Worker(url, {name});\n this.name = name;\n this.onMessage = onMessage || defaultOnMessage;\n }\n\n /**\n * Process binary data in a worker\n * @param data {data containing binary typed arrays} - data to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(data) {\n return new Promise((resolve, reject) => {\n this.worker.onmessage = event =>\n this.onMessage({worker: this.worker, data: event.data, resolve, reject});\n this.worker.onerror = error => {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = `${this.name}: WorkerThread.process() failed`;\n if (error.message) {\n message += ` ${error.message} ${error.filename}:${error.lineno}:${error.colno}`;\n }\n const betterError = new Error(message);\n console.error(error); // eslint-disable-line\n reject(betterError);\n };\n const transferList = getTransferList(data);\n this.worker.postMessage(data, transferList);\n });\n }\n\n destroy() {\n this.worker.terminate();\n this.worker = null;\n }\n}\n","import WorkerThread from './worker-thread';\n\n/**\n * Process multiple data messages with small pool of identical workers\n */\nexport default class WorkerPool {\n /**\n * @param processor {function | string} - worker function\n * @param maxConcurrency {number} - max count of workers\n */\n constructor({source, name = 'unnamed', maxConcurrency = 1, onMessage, onDebug = () => {}}) {\n this.source = source;\n this.name = name;\n this.maxConcurrency = maxConcurrency;\n this.onMessage = onMessage;\n this.onDebug = onDebug;\n\n this.jobQueue = [];\n this.idleQueue = [];\n this.count = 0;\n this.isDestroyed = false;\n }\n\n destroy() {\n // Destroy idle workers, active Workers will be destroyed on completion\n this.idleQueue.forEach(worker => worker.destroy());\n this.isDestroyed = true;\n }\n\n /**\n * Process binary data in a worker\n * @param data {data containing binary typed arrays} - data to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(data, jobName) {\n return new Promise((resolve, reject) => {\n this.jobQueue.push({data, jobName, resolve, reject});\n this._startQueuedJob();\n });\n }\n\n // PRIVATE\n\n _startQueuedJob() {\n if (!this.jobQueue.length) {\n return;\n }\n const worker = this._getAvailableWorker();\n if (!worker) {\n return;\n }\n\n // We have a worker, dequeue and start the job\n const job = this.jobQueue.shift();\n\n this.onDebug({\n message: 'processing',\n worker: worker.name,\n job: job.jobName,\n backlog: this.jobQueue.length\n });\n\n worker\n .process(job.data)\n .then(result => job.resolve(result))\n .catch(error => job.reject(error))\n .then(() => this._onWorkerDone(worker));\n }\n\n _onWorkerDone(worker) {\n if (this.isDestroyed) {\n worker.destroy();\n } else {\n this.idleQueue.push(worker);\n this._startQueuedJob();\n }\n }\n\n _getAvailableWorker() {\n // If a worker has completed and returned to the queue, it can be used\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift();\n }\n\n // Create fresh worker if we haven't yet created the max amount of worker threads for this worker source\n if (this.count < this.maxConcurrency) {\n this.count++;\n const name = `${this.name.toLowerCase()}-worker (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({source: this.source, onMessage: this.onMessage, name});\n }\n\n // No worker available, have to wait\n return null;\n }\n}\n","import WorkerPool from './worker-pool';\n\nconst DEFAULT_MAX_CONCURRENCY = 5;\n\n/**\n * Process multiple data messages with a \"farm\" of different workers (in worker pools)\n */\nexport default class WorkerFarm {\n static isSupported() {\n return typeof Worker !== 'undefined';\n }\n\n /**\n * @param processor {function | string} - worker function\n * @param maxConcurrency {number} - max count of workers\n */\n constructor({maxConcurrency = DEFAULT_MAX_CONCURRENCY, onMessage, onDebug = () => {}}) {\n this.maxConcurrency = maxConcurrency;\n this.onMessage = onMessage;\n this.onDebug = onDebug;\n this.workerPools = new Map();\n }\n\n setProps(props) {\n if ('maxConcurrency' in props) {\n this.maxConcurrency = props.maxConcurrency;\n }\n\n if ('onDebug' in props) {\n this.onDebug = props.onDebug;\n }\n }\n\n destroy() {\n this.workerPools.forEach(workerPool => workerPool.destroy());\n }\n\n /**\n * Process binary data in a worker\n * @param data {data containing binary typed arrays} - data to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(workerSource, workerName, data) {\n const workerPool = this._getWorkerPool(workerSource, workerName);\n return workerPool.process(data);\n }\n\n // PRIVATE\n\n _getWorkerPool(workerSource, workerName) {\n let workerPool = this.workerPools.get(workerName);\n if (!workerPool) {\n workerPool = new WorkerPool({\n source: workerSource,\n name: workerName,\n onMessage: this.onMessage,\n maxConcurrency: this.maxConcurrency,\n onDebug: this.onDebug\n });\n this.workerPools.set(workerName, workerPool);\n }\n return workerPool;\n }\n}\n","/* global __VERSION__ */ // __VERSION__ is injected by babel-plugin-version-inline\nimport {toArrayBuffer} from '../../javascript-utils/binary-utils';\nimport WorkerFarm from '../../worker-utils/worker-farm';\nimport {getTransferList} from '../../worker-utils/get-transfer-list';\nimport {parse} from '../parse';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport function canParseWithWorker(loader, data, options, context) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n const loaderOptions = options && options[loader.id];\n if (\n (options.worker === 'local' && loaderOptions && loaderOptions.localWorkerUrl) ||\n (options.worker && loaderOptions && loaderOptions.workerUrl)\n ) {\n return loader.useWorker ? loader.useWorker(options) : true;\n }\n return false;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createWorker in @loaders.gl/loader-utils.\n */\nexport default function parseWithWorker(loader, data, options, context) {\n const {worker} = options || {};\n const loaderOptions = (options && options[loader.id]) || {};\n const workerUrl = worker === 'local' ? loaderOptions.localWorkerUrl : loaderOptions.workerUrl;\n\n // Mark as URL\n const workerSource = `url(${workerUrl})`;\n const workerName = loader.name;\n\n const workerFarm = getWorkerFarm(options);\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const warning = loader.version !== VERSION ? `(core version ${VERSION})` : '';\n\n return workerFarm.process(workerSource, `loaders.gl@${loader.version}${warning}:${workerName}`, {\n arraybuffer: toArrayBuffer(data),\n options,\n source: `loaders.gl@${VERSION}`, // Lets worker ignore unrelated messages\n type: 'parse' // For future extension\n });\n}\n\nlet _workerFarm = null;\n\n// Create a single instance of a worker farm\nfunction getWorkerFarm(options = {}) {\n const props = {};\n if (options.maxConcurrency) {\n props.maxConcurrency = options.maxConcurrency;\n }\n if (options.onDebug) {\n props.onDebug = options.onDebug;\n }\n\n if (!_workerFarm) {\n _workerFarm = new WorkerFarm({onMessage: onWorkerMessage});\n }\n _workerFarm.setProps(props);\n\n return _workerFarm;\n}\n\nasync function onWorkerMessage({worker, data, resolve, reject}) {\n switch (data.type) {\n case 'done':\n resolve(data.result);\n break;\n\n case 'parse':\n try {\n const result = await parse(data.arraybuffer, data.options, data.url);\n worker.postMessage({type: 'parse-done', id: data.id, result}, getTransferList(result));\n } catch (error) {\n worker.postMessage({type: 'parse-error', id: data.id, message: error.message});\n }\n break;\n\n case 'error':\n reject(data.message);\n break;\n\n default:\n // TODO - is this not an error case? Log a warning?\n }\n}\n","import {getRegisteredLoaders} from './register-loaders';\nimport {normalizeLoader} from './loader-utils/normalize-loader';\nimport {isFetchResponse} from '../javascript-utils/is-type';\n\nconst EXT_PATTERN = /\\.([^.]+)$/;\nconst DATA_URL_PATTERN = /^data:(.*?)(;|,)/;\n\n// Find a loader that matches file extension and/or initial file content\n// Search the loaders array argument for a loader that matches url extension or initial data\n// Returns: a normalized loader\n\n// TODO - Need a variant that peeks at streams for parseInBatches\n// TODO - Detect multiple matching loaders? Use heuristics to grade matches?\n// TODO - Allow apps to pass context to disambiguate between multiple matches (e.g. multiple .json formats)?\n\n// eslint-disable-next-line complexity\nexport function selectLoader(loaders, url = '', data = null, {nothrow = false} = {}) {\n url = url || '';\n\n // if only a single loader was provided (not as array), force its use\n // TODO - Should this behaviour be kept and documented?\n if (loaders && !Array.isArray(loaders)) {\n const loader = loaders;\n normalizeLoader(loader);\n return loader;\n }\n\n // If no loaders provided, get the registered loaders\n loaders = [...(loaders || []), ...getRegisteredLoaders()];\n normalizeLoaders(loaders);\n\n url = url.replace(/\\?.*/, '');\n let loader = findLoaderByUrl(loaders, url);\n loader = loader || findLoaderByContentType(loaders, data);\n loader = loader || findLoaderByExamingInitialData(loaders, data);\n\n // no loader available\n if (!loader) {\n if (nothrow) {\n return null;\n }\n let message = 'No valid loader found';\n if (data) {\n message += ` for data starting with \"${getFirstCharacters(data)}\"`;\n }\n if (url) {\n message += ` for ${url}`;\n }\n throw new Error(message);\n }\n\n return loader;\n}\n\nfunction normalizeLoaders(loaders) {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\n// TODO - Would be nice to support http://example.com/file.glb?parameter=1\n// E.g: x = new URL('http://example.com/file.glb?load=1'; x.pathname\nfunction findLoaderByUrl(loaders, url) {\n // Check for data url\n let match = url.match(DATA_URL_PATTERN);\n const mimeType = match && match[1];\n if (mimeType) {\n return findLoaderByMimeType(loaders, mimeType);\n }\n // Get extension\n match = url.match(EXT_PATTERN);\n const extension = match && match[1];\n return extension && findLoaderByExtension(loaders, extension);\n}\n\nfunction findLoaderByMimeType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n }\n return null;\n}\n\nfunction findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\n\n// data should be a Response object\nfunction findLoaderByContentType(loaders, data) {\n if (!data || !isFetchResponse(data) || !data.headers) {\n return null;\n }\n\n const contentType = data.headers.get('content-type');\n return findLoaderByMimeType(loaders, contentType);\n}\n\nfunction findLoaderByExamingInitialData(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n if (testBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n // TODO Handle streaming case (requires creating a new AsyncIterator)\n }\n return null;\n}\n\nfunction testText(data, loader) {\n return loader.testText && loader.testText(data);\n}\n\nfunction testBinary(data, byteOffset, loader) {\n const type = Array.isArray(loader.test) ? 'array' : typeof loader.test;\n switch (type) {\n case 'function':\n return loader.test(data, loader);\n\n case 'string':\n case 'array':\n // Magic bytes check: If `loader.test` is a string or array of strings,\n // check if binary data starts with one of those strings\n const tests = Array.isArray(loader.test) ? loader.test : [loader.test];\n return tests.some(test => {\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n });\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength <= byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","import {assert, validateLoaderVersion} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from './loader-utils/normalize-loader';\nimport {mergeOptions} from './loader-utils/merge-options';\nimport {getUrlFromData} from './loader-utils/get-data';\nimport {getArrayBufferOrStringFromData} from './loader-utils/get-data';\nimport {getLoaders, getLoaderContext} from './loader-utils/get-loader-context';\nimport parseWithWorker, {canParseWithWorker} from './loader-utils/parse-with-worker';\nimport {selectLoader} from './select-loader';\n\nexport async function parse(data, loaders, options, context) {\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = options;\n options = loaders;\n loaders = null;\n }\n\n // DEPRECATED - backwards compatibility, last param can be URL...\n let url = '';\n if (typeof context === 'string') {\n url = context;\n context = null;\n }\n\n options = options || {};\n\n // Extract a url for auto detection\n const autoUrl = getUrlFromData(data, url);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const candidateLoaders = getLoaders(loaders, context);\n const loader = selectLoader(candidateLoaders, autoUrl, data);\n // Note: if nothrow option was set, it is possible that no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = mergeOptions(loader, options, autoUrl);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url: autoUrl, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateLoaderVersion(loader);\n\n data = await getArrayBufferOrStringFromData(data, loader);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, data, options, context)) {\n return await parseWithWorker(loader, data, options, context);\n }\n\n // Check for asynchronous parser\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n return assert(false);\n}\n","import {isFileReadable} from '../javascript-utils/is-type';\nimport {fetchFile} from './fetch/fetch-file';\nimport {isLoaderObject} from './loader-utils/normalize-loader';\n\nimport {parse} from './parse';\n\n// Note: Load does duplicate a lot of parse.\n// it can also call fetchFile on string urls, which `parse` won't do.\nexport async function load(url, loaders, options) {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n options = loaders;\n loaders = null;\n }\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetchFile(url, options);\n }\n\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n if (isFileReadable(url)) {\n // The fetch response object will contain blob.name\n data = await fetchFile(url, options);\n url = null;\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders, options, url);\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable react/no-direct-mutation-state */\nimport {COORDINATE_SYSTEM} from './constants';\nimport AttributeManager from './attribute/attribute-manager';\nimport UniformTransitionManager from './uniform-transition-manager';\nimport {diffProps, validateProps} from '../lifecycle/props';\nimport {count} from '../utils/count';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport GL from '@luma.gl/constants';\nimport {withParameters, setParameters} from '@luma.gl/core';\nimport assert from '../utils/assert';\nimport {mergeShaders} from '../utils/shader';\nimport {projectPosition, getWorldPosition} from '../shaderlib/project/project-functions';\nimport typedArrayManager from '../utils/typed-array-manager';\n\nimport Component from '../lifecycle/component';\nimport LayerState from './layer-state';\n\nimport {worldToPixels} from '@math.gl/web-mercator';\n\nimport {load} from '@loaders.gl/core';\n\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\nlet pickingColorCache = new Uint8ClampedArray(0);\n\nconst defaultProps = {\n // data: Special handling for null, see below\n data: {type: 'data', value: EMPTY_ARRAY, async: true},\n dataComparator: null,\n _dataDiff: {type: 'function', value: data => data && data.__diff, compare: false, optional: true},\n dataTransform: {type: 'function', value: null, compare: false, optional: true},\n onDataLoad: {type: 'function', value: null, compare: false, optional: true},\n fetch: {\n type: 'function',\n value: (url, {layer}) => load(url, layer.getLoadOptions()),\n compare: false\n },\n updateTriggers: {}, // Update triggers: a core change detection mechanism in deck.gl\n\n visible: true,\n pickable: false,\n opacity: {type: 'number', min: 0, max: 1, value: 1},\n\n onHover: {type: 'function', value: null, compare: false, optional: true},\n onClick: {type: 'function', value: null, compare: false, optional: true},\n onDragStart: {type: 'function', value: null, compare: false, optional: true},\n onDrag: {type: 'function', value: null, compare: false, optional: true},\n onDragEnd: {type: 'function', value: null, compare: false, optional: true},\n\n coordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin: {type: 'array', value: [0, 0, 0], compare: true},\n modelMatrix: {type: 'array', value: null, compare: true, optional: true},\n wrapLongitude: false,\n positionFormat: 'XYZ',\n colorFormat: 'RGBA',\n\n parameters: {},\n uniforms: {},\n extensions: [],\n\n // Offset depth based on layer index to avoid z-fighting.\n // Negative values pull layer towards the camera\n // https://www.opengl.org/archives/resources/faq/technical/polygonoffset.htm\n getPolygonOffset: {\n type: 'function',\n value: ({layerIndex}) => [0, -layerIndex * 100],\n compare: false\n },\n\n // Selection/Highlighting\n highlightedObjectIndex: null,\n autoHighlight: false,\n highlightColor: {type: 'color', value: [0, 0, 128, 128]}\n};\n\nexport default class Layer extends Component {\n toString() {\n const className = this.constructor.layerName || this.constructor.name;\n return `${className}({id: '${this.props.id}'})`;\n }\n\n // Public API\n\n // Updates selected state members and marks the object for redraw\n setState(updateObject) {\n this.setChangeFlags({stateChanged: true});\n Object.assign(this.state, updateObject);\n this.setNeedsRedraw();\n }\n\n // Sets the redraw flag for this layer, will trigger a redraw next animation frame\n setNeedsRedraw(redraw = true) {\n if (this.internalState) {\n this.internalState.needsRedraw = redraw;\n }\n }\n\n // This layer needs a deep update\n setNeedsUpdate() {\n this.context.layerManager.setNeedsUpdate(String(this));\n this.internalState.needsUpdate = true;\n }\n\n // Checks state of attributes and model\n getNeedsRedraw(opts = {clearRedrawFlags: false}) {\n return this._getNeedsRedraw(opts);\n }\n\n // Checks if layer attributes needs updating\n needsUpdate() {\n // Call subclass lifecycle method\n return (\n this.internalState.needsUpdate ||\n this.hasUniformTransition() ||\n this.shouldUpdateState(this._getUpdateParams())\n );\n // End lifecycle method\n }\n\n hasUniformTransition() {\n return this.internalState.uniformTransitions.active;\n }\n\n // Returns true if the layer is pickable and visible.\n isPickable() {\n return this.props.pickable && this.props.visible;\n }\n\n // Return an array of models used by this layer, can be overriden by layer subclass\n getModels() {\n return this.state && (this.state.models || (this.state.model ? [this.state.model] : []));\n }\n\n getAttributeManager() {\n return this.internalState && this.internalState.attributeManager;\n }\n\n // Returns the most recent layer that matched to this state\n // (When reacting to an async event, this layer may no longer be the latest)\n getCurrentLayer() {\n return this.internalState && this.internalState.layer;\n }\n\n // Returns the default parse options for async props\n getLoadOptions() {\n return this.props.loadOptions;\n }\n\n // PROJECTION METHODS\n\n // Projects a point with current map state (lat, lon, zoom, pitch, bearing)\n // From the current layer's coordinate system to screen\n project(xyz) {\n const {viewport} = this.context;\n const worldPosition = getWorldPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n const [x, y, z] = worldToPixels(worldPosition, viewport.pixelProjectionMatrix);\n return xyz.length === 2 ? [x, y] : [x, y, z];\n }\n\n // Note: this does not reverse `project`.\n // Always unprojects to the viewport's coordinate system\n unproject(xy) {\n const {viewport} = this.context;\n return viewport.unproject(xy);\n }\n\n projectPosition(xyz) {\n return projectPosition(xyz, {\n viewport: this.context.viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n }\n\n use64bitPositions() {\n const {coordinateSystem} = this.props;\n return (\n coordinateSystem === COORDINATE_SYSTEM.DEFAULT ||\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT ||\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n );\n }\n\n // Event handling\n onHover(info, pickingEvent) {\n if (this.props.onHover) {\n return this.props.onHover(info, pickingEvent);\n }\n return false;\n }\n\n onClick(info, pickingEvent) {\n if (this.props.onClick) {\n return this.props.onClick(info, pickingEvent);\n }\n return false;\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n // @return {Array} - a black color\n nullPickingColor() {\n return [0, 0, 0];\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n encodePickingColor(i, target = []) {\n target[0] = (i + 1) & 255;\n target[1] = ((i + 1) >> 8) & 255;\n target[2] = (((i + 1) >> 8) >> 8) & 255;\n return target;\n }\n\n // Returns the index corresponding to a picking color that doesn't match any subfeature\n // @param {Uint8Array} color - color array to be decoded\n // @return {Array} - the decoded picking color\n decodePickingColor(color) {\n assert(color instanceof Uint8Array);\n const [i1, i2, i3] = color;\n // 1 was added to seperate from no selection\n const index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n }\n\n // //////////////////////////////////////////////////\n // LIFECYCLE METHODS, overridden by the layer subclasses\n\n // Called once to set up the initial state\n // App can create WebGL resources\n initializeState() {\n throw new Error(`Layer ${this} has not defined initializeState`);\n }\n\n getShaders(shaders) {\n for (const extension of this.props.extensions) {\n shaders = mergeShaders(shaders, extension.getShaders.call(this, extension));\n }\n return shaders;\n }\n\n // Let's layer control if updateState should be called\n shouldUpdateState({oldProps, props, context, changeFlags}) {\n return changeFlags.propsOrDataChanged;\n }\n\n // Default implementation, all attributes will be invalidated and updated\n // when data changes\n /* eslint-disable-next-line complexity */\n updateState({oldProps, props, context, changeFlags}) {\n const attributeManager = this.getAttributeManager();\n if (changeFlags.dataChanged && attributeManager) {\n const {dataChanged} = changeFlags;\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged) {\n attributeManager.invalidateAll(dataRange);\n }\n } else {\n attributeManager.invalidateAll();\n }\n }\n }\n\n // Called once when layer is no longer matched and state will be discarded\n // App can destroy WebGL resources here\n finalizeState() {\n for (const model of this.getModels()) {\n model.delete();\n }\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.finalize();\n }\n this.internalState.uniformTransitions.clear();\n }\n\n // If state has a model, draw it with supplied uniforms\n draw(opts) {\n for (const model of this.getModels()) {\n model.draw(opts);\n }\n }\n\n // called to populate the info object that is passed to the event handler\n // @return null to cancel event\n getPickingInfo({info, mode}) {\n const {index} = info;\n\n if (index >= 0) {\n // If props.data is an indexable array, get the object\n if (Array.isArray(this.props.data)) {\n info.object = this.props.data[index];\n }\n }\n\n return info;\n }\n\n // END LIFECYCLE METHODS\n // //////////////////////////////////////////////////\n\n // INTERNAL METHODS\n\n // Default implementation of attribute invalidation, can be redefined\n invalidateAttribute(name = 'all', diffReason = '') {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n\n if (name === 'all') {\n attributeManager.invalidateAll();\n } else {\n attributeManager.invalidate(name);\n }\n }\n\n updateAttributes(changedAttributes) {\n for (const model of this.getModels()) {\n this._setModelAttributes(model, changedAttributes);\n }\n }\n\n // Calls attribute manager to update any WebGL attributes\n _updateAttributes(props) {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n\n // Figure out data length\n const numInstances = this.getNumInstances(props);\n const startIndices = this.getStartIndices(props);\n\n attributeManager.update({\n data: props.data,\n numInstances,\n startIndices,\n props,\n transitions: props.transitions,\n buffers: props.data.attributes,\n context: this,\n // Don't worry about non-attribute props\n ignoreUnknownAttributes: true\n });\n\n const changedAttributes = attributeManager.getChangedAttributes({clearChangedFlags: true});\n this.updateAttributes(changedAttributes);\n }\n\n // Update attribute transitions. This is called in drawLayer, no model updates required.\n _updateAttributeTransition() {\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.updateTransition();\n }\n }\n\n // Update uniform (prop) transitions. This is called in updateState, may result in model updates.\n _updateUniformTransition() {\n const {uniformTransitions} = this.internalState;\n if (uniformTransitions.active) {\n // clone props\n const propsInTransition = uniformTransitions.update();\n const props = Object.create(this.props);\n for (const key in propsInTransition) {\n Object.defineProperty(props, key, {value: propsInTransition[key]});\n }\n return props;\n }\n return this.props;\n }\n\n calculateInstancePickingColors(attribute, {numInstances}) {\n // calculateInstancePickingColors always generates the same sequence.\n // pickingColorCache saves the largest generated sequence for reuse\n const cacheSize = pickingColorCache.length / 3;\n\n if (cacheSize < numInstances) {\n pickingColorCache = typedArrayManager.allocate(pickingColorCache, numInstances, {\n size: 3,\n copy: true\n });\n // If the attribute is larger than the cache, resize the cache and populate the missing chunk\n const newCacheSize = pickingColorCache.length / 3;\n const pickingColor = [];\n assert(newCacheSize < 16777215, 'index out of picking color range');\n\n for (let i = cacheSize; i < newCacheSize; i++) {\n this.encodePickingColor(i, pickingColor);\n pickingColorCache[i * 3 + 0] = pickingColor[0];\n pickingColorCache[i * 3 + 1] = pickingColor[1];\n pickingColorCache[i * 3 + 2] = pickingColor[2];\n }\n }\n\n attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n }\n\n _setModelAttributes(model, changedAttributes) {\n const attributeManager = this.getAttributeManager();\n const excludeAttributes = model.userData.excludeAttributes || {};\n const shaderAttributes = attributeManager.getShaderAttributes(\n changedAttributes,\n excludeAttributes\n );\n\n model.setAttributes(shaderAttributes);\n }\n\n // Sets the specified instanced picking color to null picking color. Used for multi picking.\n clearPickingColor(color) {\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n\n const i = this.decodePickingColor(color);\n const start = colors.getVertexOffset(i);\n const end = colors.getVertexOffset(i + 1);\n\n // Fill the sub buffer with 0s\n colors.buffer.subData({\n data: new Uint8Array(end - start),\n offset: start // 1 byte per element\n });\n }\n\n restorePickingColors() {\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n colors.updateSubBuffer({startOffset: 0});\n }\n\n // Deduces numer of instances. Intention is to support:\n // - Explicit setting of numInstances\n // - Auto-deduction for ES6 containers that define a size member\n // - Auto-deduction for Classic Arrays via the built-in length attribute\n // - Auto-deduction via arrays\n getNumInstances(props) {\n props = props || this.props;\n\n // First Check if app has provided an explicit value\n if (props.numInstances !== undefined) {\n return props.numInstances;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.numInstances !== undefined) {\n return this.state.numInstances;\n }\n\n // Use container library to get a count for any ES6 container or object\n return count(props.data);\n }\n\n // Buffer layout describes how many attribute values are packed for each data object\n // The default (null) is one value each object.\n // Some data formats (e.g. paths, polygons) have various length. Their buffer layout\n // is in the form of [L0, L1, L2, ...]\n getStartIndices(props) {\n props = props || this.props;\n\n // First Check if startIndices is provided as an explicit value\n if (props.startIndices !== undefined) {\n return props.startIndices;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.startIndices) {\n return this.state.startIndices;\n }\n\n return null;\n }\n\n // LAYER MANAGER API\n // Should only be called by the deck.gl LayerManager class\n\n // Called by layer manager when a new layer is found\n /* eslint-disable max-statements */\n _initialize() {\n debug(TRACE_INITIALIZE, this);\n\n this._initState();\n\n // Call subclass lifecycle methods\n this.initializeState(this.context);\n // Initialize extensions\n for (const extension of this.props.extensions) {\n extension.initializeState.call(this, this.context, extension);\n }\n // End subclass lifecycle methods\n\n // initializeState callback tends to clear state\n this.setChangeFlags({\n dataChanged: true,\n propsChanged: true,\n viewportChanged: true,\n extensionsChanged: true\n });\n\n this._updateState();\n }\n\n // Called by layer manager\n // if this layer is new (not matched with an existing layer) oldProps will be empty object\n _update() {\n // Call subclass lifecycle method\n const stateNeedsUpdate = this.needsUpdate();\n // End lifecycle method\n debug(TRACE_UPDATE, this, stateNeedsUpdate);\n\n if (stateNeedsUpdate) {\n this._updateState();\n }\n }\n /* eslint-enable max-statements */\n\n // Common code for _initialize and _update\n _updateState() {\n const currentProps = this.props;\n const propsInTransition = this._updateUniformTransition();\n this.internalState.propsInTransition = propsInTransition;\n // Overwrite this.props during update to use in-transition prop values\n this.props = propsInTransition;\n\n const updateParams = this._getUpdateParams();\n\n // Safely call subclass lifecycle methods\n if (this.context.gl) {\n this.updateState(updateParams);\n } else {\n try {\n this.updateState(updateParams);\n } catch (error) {\n // ignore error if gl context is missing\n }\n }\n // Execute extension updates\n for (const extension of this.props.extensions) {\n extension.updateState.call(this, updateParams, extension);\n }\n this._updateModules(updateParams);\n // End subclass lifecycle methods\n\n if (this.isComposite) {\n // Render or update previously rendered sublayers\n this._renderLayers(updateParams);\n } else {\n this.setNeedsRedraw();\n // Add any subclass attributes\n this._updateAttributes(this.props);\n\n // Note: Automatic instance count update only works for single layers\n if (this.state.model) {\n this.state.model.setInstanceCount(this.getNumInstances());\n }\n }\n\n this.props = currentProps;\n this.clearChangeFlags();\n this.internalState.needsUpdate = false;\n this.internalState.resetOldProps();\n }\n\n // Called by manager when layer is about to be disposed\n // Note: not guaranteed to be called on application shutdown\n _finalize() {\n debug(TRACE_FINALIZE, this);\n assert(this.internalState && this.state);\n\n // Call subclass lifecycle method\n this.finalizeState(this.context);\n // Finalize extensions\n for (const extension of this.props.extensions) {\n extension.finalizeState.call(this, extension);\n }\n }\n\n // Calculates uniforms\n drawLayer({moduleParameters = null, uniforms = {}, parameters = {}}) {\n this._updateAttributeTransition();\n\n const currentProps = this.props;\n // Overwrite this.props during redraw to use in-transition prop values\n this.props = this.internalState.propsInTransition;\n\n const {opacity} = this.props;\n // apply gamma to opacity to make it visually \"linear\"\n uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n // TODO/ib - hack move to luma Model.draw\n if (moduleParameters) {\n this.setModuleParameters(moduleParameters);\n }\n\n // Apply polygon offset to avoid z-fighting\n // TODO - move to draw-layers\n const {getPolygonOffset} = this.props;\n const offsets = (getPolygonOffset && getPolygonOffset(uniforms)) || [0, 0];\n\n setParameters(this.context.gl, {polygonOffset: offsets});\n\n // Call subclass lifecycle method\n withParameters(this.context.gl, parameters, () => {\n this.draw({moduleParameters, uniforms, parameters, context: this.context});\n });\n\n // End lifecycle method\n\n this.props = currentProps;\n }\n\n // Helper methods\n getChangeFlags() {\n return this.internalState.changeFlags;\n }\n\n // Dirty some change flags, will be handled by updateLayer\n /* eslint-disable complexity */\n setChangeFlags(flags) {\n const {changeFlags} = this.internalState;\n\n for (const key in changeFlags) {\n if (flags[key] && !changeFlags[key]) {\n changeFlags[key] = flags[key];\n debug(TRACE_CHANGE_FLAG, this, key, flags);\n }\n }\n\n // Update composite flags\n const propsOrDataChanged =\n changeFlags.dataChanged ||\n changeFlags.updateTriggersChanged ||\n changeFlags.propsChanged ||\n changeFlags.extensionsChanged;\n changeFlags.propsOrDataChanged = propsOrDataChanged;\n changeFlags.somethingChanged =\n propsOrDataChanged || flags.viewportChanged || flags.stateChanged;\n }\n /* eslint-enable complexity */\n\n // Clear all changeFlags, typically after an update\n clearChangeFlags() {\n this.internalState.changeFlags = {\n // Primary changeFlags, can be strings stating reason for change\n dataChanged: false,\n propsChanged: false,\n updateTriggersChanged: false,\n viewportChanged: false,\n stateChanged: false,\n extensionsChanged: false,\n\n // Derived changeFlags\n propsOrDataChanged: false,\n somethingChanged: false\n };\n }\n\n // Compares the layers props with old props from a matched older layer\n // and extracts change flags that describe what has change so that state\n // can be update correctly with minimal effort\n diffProps(newProps, oldProps) {\n const changeFlags = diffProps(newProps, oldProps);\n\n // iterate over changedTriggers\n if (changeFlags.updateTriggersChanged) {\n for (const key in changeFlags.updateTriggersChanged) {\n if (changeFlags.updateTriggersChanged[key]) {\n this.invalidateAttribute(key);\n }\n }\n }\n\n // trigger uniform transitions\n if (changeFlags.transitionsChanged) {\n for (const key in changeFlags.transitionsChanged) {\n // prop changed and transition is enabled\n this.internalState.uniformTransitions.add(\n key,\n oldProps[key],\n newProps[key],\n newProps.transitions[key]\n );\n }\n }\n\n return this.setChangeFlags(changeFlags);\n }\n\n // Called by layer manager to validate props (in development)\n validateProps() {\n validateProps(this.props);\n }\n\n setModuleParameters(moduleParameters) {\n for (const model of this.getModels()) {\n model.updateModuleSettings(moduleParameters);\n }\n }\n\n // PRIVATE METHODS\n _updateModules({props, oldProps}) {\n // Picking module parameters\n const {autoHighlight, highlightedObjectIndex, highlightColor} = props;\n if (\n oldProps.autoHighlight !== autoHighlight ||\n oldProps.highlightedObjectIndex !== highlightedObjectIndex ||\n oldProps.highlightColor !== highlightColor\n ) {\n const parameters = {};\n if (!autoHighlight) {\n parameters.pickingSelectedColor = null;\n }\n // TODO - fix in luma?\n highlightColor[3] = highlightColor[3] || 255;\n parameters.pickingHighlightColor = highlightColor;\n\n // highlightedObjectIndex will overwrite any settings from auto highlighting.\n if (Number.isInteger(highlightedObjectIndex)) {\n parameters.pickingSelectedColor =\n highlightedObjectIndex >= 0 ? this.encodePickingColor(highlightedObjectIndex) : null;\n }\n\n this.setModuleParameters(parameters);\n }\n }\n\n _getUpdateParams() {\n return {\n props: this.props,\n oldProps: this.internalState.getOldProps(),\n context: this.context,\n changeFlags: this.internalState.changeFlags\n };\n }\n\n // Checks state of attributes and model\n _getNeedsRedraw(opts) {\n // this method may be called by the render loop as soon a the layer\n // has been created, so guard against uninitialized state\n if (!this.internalState) {\n return false;\n }\n\n let redraw = false;\n redraw = redraw || (this.internalState.needsRedraw && this.id);\n this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n\n // TODO - is attribute manager needed? - Model should be enough.\n const attributeManager = this.getAttributeManager();\n const attributeManagerNeedsRedraw = attributeManager && attributeManager.getNeedsRedraw(opts);\n redraw = redraw || attributeManagerNeedsRedraw;\n\n return redraw;\n }\n\n // Create new attribute manager\n _getAttributeManager() {\n return new AttributeManager(this.context.gl, {\n id: this.props.id,\n stats: this.context.stats,\n timeline: this.context.timeline\n });\n }\n\n _initState() {\n assert(!this.internalState && !this.state);\n assert(isFinite(this.props.coordinateSystem), `${this.id}: invalid coordinateSystem`);\n\n const attributeManager = this._getAttributeManager();\n\n if (attributeManager) {\n // All instanced layers get instancePickingColors attribute by default\n // Their shaders can use it to render a picking scene\n // TODO - this slightly slows down non instanced layers\n attributeManager.addInstanced({\n instancePickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n update: this.calculateInstancePickingColors\n }\n });\n }\n\n this.internalState = new LayerState({\n attributeManager,\n layer: this\n });\n this.clearChangeFlags(); // populate this.internalState.changeFlags\n\n this.state = {};\n // for backwards compatibility with older layers\n // TODO - remove in next release\n /* eslint-disable accessor-pairs */\n Object.defineProperty(this.state, 'attributeManager', {\n get: () => {\n log.deprecated('layer.state.attributeManager', 'layer.getAttributeManager()');\n return attributeManager;\n }\n });\n /* eslint-enable accessor-pairs */\n\n this.internalState.layer = this;\n this.internalState.uniformTransitions = new UniformTransitionManager(this.context.timeline);\n this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n }\n\n // Called by layer manager to transfer state from an old layer\n _transferState(oldLayer) {\n debug(TRACE_MATCHED, this, this === oldLayer);\n\n const {state, internalState} = oldLayer;\n assert(state && internalState);\n\n if (this === oldLayer) {\n return;\n }\n\n // Move internalState\n this.internalState = internalState;\n this.internalState.layer = this;\n\n // Move state\n this.state = state;\n // We keep the state ref on old layers to support async actions\n // oldLayer.state = null;\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n\n this.diffProps(this.props, this.internalState.getOldProps());\n }\n\n _onAsyncPropUpdated() {\n this.diffProps(this.props, this.internalState.getOldProps());\n this.setNeedsUpdate();\n }\n}\n\nLayer.layerName = 'Layer';\nLayer.defaultProps = defaultProps;\n","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config, formatValue, equals, isArray} from '../../lib/common';\n\nexport default class MathArray extends Array {\n clone() {\n return new this.constructor().copy(this);\n }\n\n from(arrayOrObject) {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n fromArray(array, offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n to(arrayOrObject) {\n if (arrayOrObject === this) {\n return this;\n }\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target) {\n return target ? this.to(target) : this;\n }\n\n toArray(array = [], offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n array[offset + i] = this[i];\n }\n return array;\n }\n\n toFloat32Array() {\n return new Float32Array(this);\n }\n\n toString() {\n return this.formatString(config);\n }\n\n formatString(opts) {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n negate() {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n lerp(a, b, t) {\n if (t === undefined) {\n t = b;\n b = a;\n a = this; // eslint-disable-line\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n min(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n max(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector, maxVector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale) {\n if (Array.isArray(scale)) {\n return this.multiply(scale);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n return this.check();\n }\n\n // three.js compatibility\n\n sub(a) {\n return this.subtract(a);\n }\n\n setScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n addScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n subScalar(a) {\n return this.addScalar(-a);\n }\n\n multiplyScalar(scalar) {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n divideScalar(a) {\n return this.scale(1 / a);\n }\n\n clampScalar(min, max) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n // Cesium compatibility\n\n multiplyByScalar(scalar) {\n return this.scale(scalar);\n }\n\n // THREE.js compatibility\n get elements() {\n return this;\n }\n\n // Debug checks\n\n check() {\n if (config.debug && !this.validate(this)) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n validate() {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","var bn = require('bn.js');\nvar randomBytes = require('randombytes');\nmodule.exports = crt;\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(bn.mont(priv.modulus))\n .redPow(new bn(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder:r.invm(priv.modulus)\n };\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var mod = bn.mont(priv.modulus);\n var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(bn.mont(priv.prime1));\n var c2 = blinded.toRed(bn.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1);\n var m2 = c2.redPow(priv.exponent2);\n m1 = m1.fromRed();\n m2 = m2.fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p);\n h.imul(q);\n m2.iadd(h);\n return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\ncrt.getr = getr;\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r = new bn(randomBytes(len));\n while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n r = new bn(randomBytes(len));\n }\n return r;\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'UNSAFE_componentWillReceiveProps',\n\t\tvalue: function UNSAFE_componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","import {withParameters} from '@luma.gl/gltools';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport {assert} from '../utils';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n// Optionally clears depth, color and stencil buffers\nexport function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) {\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n// WebGL2 - clear a specific drawing buffer\nexport function clearBuffer(\n gl,\n {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {}\n) {\n assertWebGL2Context(gl);\n\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n","import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\n// TODO - this should be the default export, test cases need updating\nexport const FEATURES = {\n WEBGL2: 'WEBGL2',\n\n // API SUPPORT\n VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n TIMER_QUERY: 'TIMER_QUERY',\n INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n\n // FEATURES\n ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n\n // BLENDING\n BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n FLOAT_BLEND: 'FLOAT_BLEND',\n\n // TEXTURES: '// TEXTURES', RENDERBUFFERS\n COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n\n // TEXTURES\n TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n\n TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n\n // FRAMEBUFFERS: '// FRAMEBUFFERS', TEXTURES AND RENDERBUFFERS\n COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n\n // GLSL extensions\n GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\n// function to test if Float 32 bit format texture can be bound as color attachment\nfunction checkFloat32ColorAttachment(gl) {\n const testTexture = new Texture2D(gl, {\n format: gl.RGBA,\n type: gl.FLOAT,\n dataFormat: gl.RGBA\n });\n const testFb = new Framebuffer(gl, {\n id: `test-framebuffer`,\n check: false,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === gl.FRAMEBUFFER_COMPLETE;\n}\n\n// Defines luma.gl \"feature\" names and semantics\n// Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\nexport default {\n [FEATURES.WEBGL2]: [false, true],\n\n // API SUPPORT\n [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n\n // FEATURES\n [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n\n // BLENDING\n [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n\n // TEXTURES\n [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n\n [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n\n // GLSL extensions\n [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","import AwaitValue from \"./AwaitValue\";\nexport default function _awaitAsyncGenerator(value) {\n return new AwaitValue(value);\n}","import AwaitValue from \"./AwaitValue\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nif (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n}\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","import AsyncGenerator from \"./AsyncGenerator\";\nexport default function _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError(\"Object is not async iterable\");\n}","export default function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n\n ;\n\n if (typeof Symbol === \"function\" && Symbol.iterator) {\n iter[Symbol.iterator] = function () {\n return this;\n };\n }\n\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump(\"next\", value);\n };\n\n if (typeof inner[\"throw\"] === \"function\") {\n iter[\"throw\"] = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump(\"throw\", value);\n };\n }\n\n if (typeof inner[\"return\"] === \"function\") {\n iter[\"return\"] = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump(\"return\", value);\n };\n }\n\n return iter;\n}","/// @file\n/// @addtogroup flatbuffers_javascript_api\n/// @{\n/// @cond FLATBUFFERS_INTERNAL\n\n/**\n * @fileoverview\n *\n * Need to suppress 'global this' error so the Node.js export line doesn't cause\n * closure compile to error out.\n * @suppress {globalThis}\n */\n\n/**\n * @const\n * @namespace\n */\nvar flatbuffers = {};\n\n/**\n * @typedef {number}\n */\nflatbuffers.Offset;\n\n/**\n * @typedef {{\n * bb: flatbuffers.ByteBuffer,\n * bb_pos: number\n * }}\n */\nflatbuffers.Table;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZEOF_SHORT = 2;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZEOF_INT = 4;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.FILE_IDENTIFIER_LENGTH = 4;\n\n/**\n * @enum {number}\n */\nflatbuffers.Encoding = {\n UTF8_BYTES: 1,\n UTF16_STRING: 2\n};\n\n/**\n * @type {Int32Array}\n * @const\n */\nflatbuffers.int32 = new Int32Array(2);\n\n/**\n * @type {Float32Array}\n * @const\n */\nflatbuffers.float32 = new Float32Array(flatbuffers.int32.buffer);\n\n/**\n * @type {Float64Array}\n * @const\n */\nflatbuffers.float64 = new Float64Array(flatbuffers.int32.buffer);\n\n/**\n * @type {boolean}\n * @const\n */\nflatbuffers.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @constructor\n * @param {number} low\n * @param {number} high\n */\nflatbuffers.Long = function(low, high) {\n /**\n * @type {number}\n * @const\n */\n this.low = low | 0;\n\n /**\n * @type {number}\n * @const\n */\n this.high = high | 0;\n};\n\n/**\n * @param {number} low\n * @param {number} high\n * @returns {flatbuffers.Long}\n */\nflatbuffers.Long.create = function(low, high) {\n // Special-case zero to avoid GC overhead for default values\n return low == 0 && high == 0 ? flatbuffers.Long.ZERO : new flatbuffers.Long(low, high);\n};\n\n/**\n * @returns {number}\n */\nflatbuffers.Long.prototype.toFloat64 = function() {\n return (this.low >>> 0) + this.high * 0x100000000;\n};\n\n/**\n * @param {flatbuffers.Long} other\n * @returns {boolean}\n */\nflatbuffers.Long.prototype.equals = function(other) {\n return this.low == other.low && this.high == other.high;\n};\n\n/**\n * @type {flatbuffers.Long}\n * @const\n */\nflatbuffers.Long.ZERO = new flatbuffers.Long(0, 0);\n\n/// @endcond\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a FlatBufferBuilder.\n *\n * @constructor\n * @param {number=} opt_initial_size\n */\nflatbuffers.Builder = function(opt_initial_size) {\n if (!opt_initial_size) {\n var initial_size = 1024;\n } else {\n var initial_size = opt_initial_size;\n }\n\n /**\n * @type {flatbuffers.ByteBuffer}\n * @private\n */\n this.bb = flatbuffers.ByteBuffer.allocate(initial_size);\n\n /**\n * Remaining space in the ByteBuffer.\n *\n * @type {number}\n * @private\n */\n this.space = initial_size;\n\n /**\n * Minimum alignment encountered so far.\n *\n * @type {number}\n * @private\n */\n this.minalign = 1;\n\n /**\n * The vtable for the current table.\n *\n * @type {Array.}\n * @private\n */\n this.vtable = null;\n\n /**\n * The amount of fields we're actually using.\n *\n * @type {number}\n * @private\n */\n this.vtable_in_use = 0;\n\n /**\n * Whether we are currently serializing a table.\n *\n * @type {boolean}\n * @private\n */\n this.isNested = false;\n\n /**\n * Starting offset of the current struct/table.\n *\n * @type {number}\n * @private\n */\n this.object_start = 0;\n\n /**\n * List of offsets of all vtables.\n *\n * @type {Array.}\n * @private\n */\n this.vtables = [];\n\n /**\n * For the current vector being built.\n *\n * @type {number}\n * @private\n */\n this.vector_num_elems = 0;\n\n /**\n * False omits default values from the serialized data\n *\n * @type {boolean}\n * @private\n */\n this.force_defaults = false;\n};\n\nflatbuffers.Builder.prototype.clear = function() {\n this.bb.clear();\n this.space = this.bb.capacity();\n this.minalign = 1;\n this.vtable = null;\n this.vtable_in_use = 0;\n this.isNested = false;\n this.object_start = 0;\n this.vtables = [];\n this.vector_num_elems = 0;\n this.force_defaults = false;\n};\n\n/**\n * In order to save space, fields that are set to their default value\n * don't get serialized into the buffer. Forcing defaults provides a\n * way to manually disable this optimization.\n *\n * @param {boolean} forceDefaults true always serializes default values\n */\nflatbuffers.Builder.prototype.forceDefaults = function(forceDefaults) {\n this.force_defaults = forceDefaults;\n};\n\n/**\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n * called finish(). The actual data starts at the ByteBuffer's current position,\n * not necessarily at 0.\n *\n * @returns {flatbuffers.ByteBuffer}\n */\nflatbuffers.Builder.prototype.dataBuffer = function() {\n return this.bb;\n};\n\n/**\n * Get the bytes representing the FlatBuffer. Only call this after you've\n * called finish().\n *\n * @returns {Uint8Array}\n */\nflatbuffers.Builder.prototype.asUint8Array = function() {\n return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Prepare to write an element of `size` after `additional_bytes` have been\n * written, e.g. if you write a string, you need to align such the int length\n * field is aligned to 4 bytes, and the string data follows it directly. If all\n * you need to do is alignment, `additional_bytes` will be 0.\n *\n * @param {number} size This is the of the new element to write\n * @param {number} additional_bytes The padding size\n */\nflatbuffers.Builder.prototype.prep = function(size, additional_bytes) {\n // Track the biggest thing we've ever aligned to.\n if (size > this.minalign) {\n this.minalign = size;\n }\n\n // Find the amount of alignment needed such that `size` is properly\n // aligned after `additional_bytes`\n var align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n\n // Reallocate the buffer if needed.\n while (this.space < align_size + size + additional_bytes) {\n var old_buf_size = this.bb.capacity();\n this.bb = flatbuffers.Builder.growByteBuffer(this.bb);\n this.space += this.bb.capacity() - old_buf_size;\n }\n\n this.pad(align_size);\n};\n\n/**\n * @param {number} byte_size\n */\nflatbuffers.Builder.prototype.pad = function(byte_size) {\n for (var i = 0; i < byte_size; i++) {\n this.bb.writeInt8(--this.space, 0);\n }\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt8 = function(value) {\n this.bb.writeInt8(this.space -= 1, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt16 = function(value) {\n this.bb.writeInt16(this.space -= 2, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt32 = function(value) {\n this.bb.writeInt32(this.space -= 4, value);\n};\n\n/**\n * @param {flatbuffers.Long} value\n */\nflatbuffers.Builder.prototype.writeInt64 = function(value) {\n this.bb.writeInt64(this.space -= 8, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeFloat32 = function(value) {\n this.bb.writeFloat32(this.space -= 4, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeFloat64 = function(value) {\n this.bb.writeFloat64(this.space -= 8, value);\n};\n/// @endcond\n\n/**\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int8` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt8 = function(value) {\n this.prep(1, 0);\n this.writeInt8(value);\n};\n\n/**\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int16` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt16 = function(value) {\n this.prep(2, 0);\n this.writeInt16(value);\n};\n\n/**\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int32` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt32 = function(value) {\n this.prep(4, 0);\n this.writeInt32(value);\n};\n\n/**\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {flatbuffers.Long} value The `int64` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt64 = function(value) {\n this.prep(8, 0);\n this.writeInt64(value);\n};\n\n/**\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `float32` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addFloat32 = function(value) {\n this.prep(4, 0);\n this.writeFloat32(value);\n};\n\n/**\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `float64` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addFloat64 = function(value) {\n this.prep(8, 0);\n this.writeFloat64(value);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt8 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt8(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt16 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt16(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt32 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt32(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {flatbuffers.Long} value\n * @param {flatbuffers.Long} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt64 = function(voffset, value, defaultValue) {\n if (this.force_defaults || !value.equals(defaultValue)) {\n this.addInt64(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldFloat32 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat32(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldFloat64 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat64(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {flatbuffers.Offset} value\n * @param {flatbuffers.Offset} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldOffset = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addOffset(value);\n this.slot(voffset);\n }\n};\n\n/**\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n *\n * @param {number} voffset\n * @param {flatbuffers.Offset} value\n * @param {flatbuffers.Offset} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldStruct = function(voffset, value, defaultValue) {\n if (value != defaultValue) {\n this.nested(value);\n this.slot(voffset);\n }\n};\n\n/**\n * Structures are always stored inline, they need to be created right\n * where they're used. You'll get this assertion failure if you\n * created it elsewhere.\n *\n * @param {flatbuffers.Offset} obj The offset of the created object\n */\nflatbuffers.Builder.prototype.nested = function(obj) {\n if (obj != this.offset()) {\n throw new Error('FlatBuffers: struct must be serialized inline.');\n }\n};\n\n/**\n * Should not be creating any other object, string or vector\n * while an object is being constructed\n */\nflatbuffers.Builder.prototype.notNested = function() {\n if (this.isNested) {\n throw new Error('FlatBuffers: object serialization must not be nested.');\n }\n};\n\n/**\n * Set the current vtable at `voffset` to the current location in the buffer.\n *\n * @param {number} voffset\n */\nflatbuffers.Builder.prototype.slot = function(voffset) {\n this.vtable[voffset] = this.offset();\n};\n\n/**\n * @returns {flatbuffers.Offset} Offset relative to the end of the buffer.\n */\nflatbuffers.Builder.prototype.offset = function() {\n return this.bb.capacity() - this.space;\n};\n\n/**\n * Doubles the size of the backing ByteBuffer and copies the old data towards\n * the end of the new buffer (since we build the buffer backwards).\n *\n * @param {flatbuffers.ByteBuffer} bb The current buffer with the existing data\n * @returns {flatbuffers.ByteBuffer} A new byte buffer with the old data copied\n * to it. The data is located at the end of the buffer.\n *\n * uint8Array.set() formally takes {Array|ArrayBufferView}, so to pass\n * it a uint8Array we need to suppress the type check:\n * @suppress {checkTypes}\n */\nflatbuffers.Builder.growByteBuffer = function(bb) {\n var old_buf_size = bb.capacity();\n\n // Ensure we don't grow beyond what fits in an int.\n if (old_buf_size & 0xC0000000) {\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n }\n\n var new_buf_size = old_buf_size << 1;\n var nbb = flatbuffers.ByteBuffer.allocate(new_buf_size);\n nbb.setPosition(new_buf_size - old_buf_size);\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n return nbb;\n};\n/// @endcond\n\n/**\n * Adds on offset, relative to where it will be written.\n *\n * @param {flatbuffers.Offset} offset The offset to add.\n */\nflatbuffers.Builder.prototype.addOffset = function(offset) {\n this.prep(flatbuffers.SIZEOF_INT, 0); // Ensure alignment is already done.\n this.writeInt32(this.offset() - offset + flatbuffers.SIZEOF_INT);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Start encoding a new object in the buffer. Users will not usually need to\n * call this directly. The FlatBuffers compiler will generate helper methods\n * that call this method internally.\n *\n * @param {number} numfields\n */\nflatbuffers.Builder.prototype.startObject = function(numfields) {\n this.notNested();\n if (this.vtable == null) {\n this.vtable = [];\n }\n this.vtable_in_use = numfields;\n for (var i = 0; i < numfields; i++) {\n this.vtable[i] = 0; // This will push additional elements as needed\n }\n this.isNested = true;\n this.object_start = this.offset();\n};\n\n/**\n * Finish off writing the object that is under construction.\n *\n * @returns {flatbuffers.Offset} The offset to the object inside `dataBuffer`\n */\nflatbuffers.Builder.prototype.endObject = function() {\n if (this.vtable == null || !this.isNested) {\n throw new Error('FlatBuffers: endObject called without startObject');\n }\n\n this.addInt32(0);\n var vtableloc = this.offset();\n\n // Trim trailing zeroes.\n var i = this.vtable_in_use - 1;\n for (; i >= 0 && this.vtable[i] == 0; i--) {}\n var trimmed_size = i + 1;\n\n // Write out the current vtable.\n for (; i >= 0; i--) {\n // Offset relative to the start of the table.\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n }\n\n var standard_fields = 2; // The fields below:\n this.addInt16(vtableloc - this.object_start);\n var len = (trimmed_size + standard_fields) * flatbuffers.SIZEOF_SHORT;\n this.addInt16(len);\n\n // Search for an existing vtable that matches the current one.\n var existing_vtable = 0;\n var vt1 = this.space;\nouter_loop:\n for (i = 0; i < this.vtables.length; i++) {\n var vt2 = this.bb.capacity() - this.vtables[i];\n if (len == this.bb.readInt16(vt2)) {\n for (var j = flatbuffers.SIZEOF_SHORT; j < len; j += flatbuffers.SIZEOF_SHORT) {\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n continue outer_loop;\n }\n }\n existing_vtable = this.vtables[i];\n break;\n }\n }\n\n if (existing_vtable) {\n // Found a match:\n // Remove the current vtable.\n this.space = this.bb.capacity() - vtableloc;\n\n // Point table to existing vtable.\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n } else {\n // No match:\n // Add the location of the current vtable to the list of vtables.\n this.vtables.push(this.offset());\n\n // Point table to current vtable.\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n }\n\n this.isNested = false;\n return vtableloc;\n};\n/// @endcond\n\n/**\n * Finalize a buffer, poiting to the given `root_table`.\n *\n * @param {flatbuffers.Offset} root_table\n * @param {string=} opt_file_identifier\n */\nflatbuffers.Builder.prototype.finish = function(root_table, opt_file_identifier) {\n if (opt_file_identifier) {\n var file_identifier = opt_file_identifier;\n this.prep(this.minalign, flatbuffers.SIZEOF_INT +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n if (file_identifier.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n }\n for (var i = flatbuffers.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n this.writeInt8(file_identifier.charCodeAt(i));\n }\n }\n this.prep(this.minalign, flatbuffers.SIZEOF_INT);\n this.addOffset(root_table);\n this.bb.setPosition(this.space);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * This checks a required field has been set in a given table that has\n * just been constructed.\n *\n * @param {flatbuffers.Offset} table\n * @param {number} field\n */\nflatbuffers.Builder.prototype.requiredField = function(table, field) {\n var table_start = this.bb.capacity() - table;\n var vtable_start = table_start - this.bb.readInt32(table_start);\n var ok = this.bb.readInt16(vtable_start + field) != 0;\n\n // If this fails, the caller will show what field needs to be set.\n if (!ok) {\n throw new Error('FlatBuffers: field ' + field + ' must be set');\n }\n};\n\n/**\n * Start a new array/vector of objects. Users usually will not call\n * this directly. The FlatBuffers compiler will create a start/end\n * method for vector types in generated code.\n *\n * @param {number} elem_size The size of each element in the array\n * @param {number} num_elems The number of elements in the array\n * @param {number} alignment The alignment of the array\n */\nflatbuffers.Builder.prototype.startVector = function(elem_size, num_elems, alignment) {\n this.notNested();\n this.vector_num_elems = num_elems;\n this.prep(flatbuffers.SIZEOF_INT, elem_size * num_elems);\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n};\n\n/**\n * Finish off the creation of an array and all its elements. The array must be\n * created with `startVector`.\n *\n * @returns {flatbuffers.Offset} The offset at which the newly created array\n * starts.\n */\nflatbuffers.Builder.prototype.endVector = function() {\n this.writeInt32(this.vector_num_elems);\n return this.offset();\n};\n/// @endcond\n\n/**\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n *\n * @param {string|Uint8Array} s The string to encode\n * @return {flatbuffers.Offset} The offset in the buffer where the encoded string starts\n */\nflatbuffers.Builder.prototype.createString = function(s) {\n if (s instanceof Uint8Array) {\n var utf8 = s;\n } else {\n var utf8 = [];\n var i = 0;\n\n while (i < s.length) {\n var codePoint;\n\n // Decode UTF-16\n var a = s.charCodeAt(i++);\n if (a < 0xD800 || a >= 0xDC00) {\n codePoint = a;\n } else {\n var b = s.charCodeAt(i++);\n codePoint = (a << 10) + b + (0x10000 - (0xD800 << 10) - 0xDC00);\n }\n\n // Encode UTF-8\n if (codePoint < 0x80) {\n utf8.push(codePoint);\n } else {\n if (codePoint < 0x800) {\n utf8.push(((codePoint >> 6) & 0x1F) | 0xC0);\n } else {\n if (codePoint < 0x10000) {\n utf8.push(((codePoint >> 12) & 0x0F) | 0xE0);\n } else {\n utf8.push(\n ((codePoint >> 18) & 0x07) | 0xF0,\n ((codePoint >> 12) & 0x3F) | 0x80);\n }\n utf8.push(((codePoint >> 6) & 0x3F) | 0x80);\n }\n utf8.push((codePoint & 0x3F) | 0x80);\n }\n }\n }\n\n this.addInt8(0);\n this.startVector(1, utf8.length, 1);\n this.bb.setPosition(this.space -= utf8.length);\n for (var i = 0, offset = this.space, bytes = this.bb.bytes(); i < utf8.length; i++) {\n bytes[offset++] = utf8[i];\n }\n return this.endVector();\n};\n\n/**\n * A helper function to avoid generated code depending on this file directly.\n *\n * @param {number} low\n * @param {number} high\n * @returns {flatbuffers.Long}\n */\nflatbuffers.Builder.prototype.createLong = function(low, high) {\n return flatbuffers.Long.create(low, high);\n};\n////////////////////////////////////////////////////////////////////////////////\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Create a new ByteBuffer with a given array of bytes (`Uint8Array`).\n *\n * @constructor\n * @param {Uint8Array} bytes\n */\nflatbuffers.ByteBuffer = function(bytes) {\n /**\n * @type {Uint8Array}\n * @private\n */\n this.bytes_ = bytes;\n\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n/**\n * Create and allocate a new ByteBuffer with a given size.\n *\n * @param {number} byte_size\n * @returns {flatbuffers.ByteBuffer}\n */\nflatbuffers.ByteBuffer.allocate = function(byte_size) {\n return new flatbuffers.ByteBuffer(new Uint8Array(byte_size));\n};\n\nflatbuffers.ByteBuffer.prototype.clear = function() {\n this.position_ = 0;\n};\n\n/**\n * Get the underlying `Uint8Array`.\n *\n * @returns {Uint8Array}\n */\nflatbuffers.ByteBuffer.prototype.bytes = function() {\n return this.bytes_;\n};\n\n/**\n * Get the buffer's position.\n *\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.position = function() {\n return this.position_;\n};\n\n/**\n * Set the buffer's position.\n *\n * @param {number} position\n */\nflatbuffers.ByteBuffer.prototype.setPosition = function(position) {\n this.position_ = position;\n};\n\n/**\n * Get the buffer's capacity.\n *\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.capacity = function() {\n return this.bytes_.length;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt8 = function(offset) {\n return this.readUint8(offset) << 24 >> 24;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint8 = function(offset) {\n return this.bytes_[offset];\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt16 = function(offset) {\n return this.readUint16(offset) << 16 >> 16;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint16 = function(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt32 = function(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint32 = function(offset) {\n return this.readInt32(offset) >>> 0;\n};\n\n/**\n * @param {number} offset\n * @returns {flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.readInt64 = function(offset) {\n return new flatbuffers.Long(this.readInt32(offset), this.readInt32(offset + 4));\n};\n\n/**\n * @param {number} offset\n * @returns {flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.readUint64 = function(offset) {\n return new flatbuffers.Long(this.readUint32(offset), this.readUint32(offset + 4));\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readFloat32 = function(offset) {\n flatbuffers.int32[0] = this.readInt32(offset);\n return flatbuffers.float32[0];\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readFloat64 = function(offset) {\n flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1] = this.readInt32(offset);\n flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n return flatbuffers.float64[0];\n};\n\n/**\n * @param {number} offset\n * @param {number|boolean} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt8 = function(offset, value) {\n this.bytes_[offset] = /** @type {number} */(value);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint8 = function(offset, value) {\n this.bytes_[offset] = value;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt16 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint16 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt32 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint32 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n};\n\n/**\n * @param {number} offset\n * @param {flatbuffers.Long} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt64 = function(offset, value) {\n this.writeInt32(offset, value.low);\n this.writeInt32(offset + 4, value.high);\n};\n\n/**\n * @param {number} offset\n * @param {flatbuffers.Long} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint64 = function(offset, value) {\n this.writeUint32(offset, value.low);\n this.writeUint32(offset + 4, value.high);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeFloat32 = function(offset, value) {\n flatbuffers.float32[0] = value;\n this.writeInt32(offset, flatbuffers.int32[0]);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeFloat64 = function(offset, value) {\n flatbuffers.float64[0] = value;\n this.writeInt32(offset, flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1]);\n this.writeInt32(offset + 4, flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0]);\n};\n\n/**\n * Return the file identifier. Behavior is undefined for FlatBuffers whose\n * schema does not include a file_identifier (likely points at padding or the\n * start of a the root vtable).\n * @returns {string}\n */\nflatbuffers.ByteBuffer.prototype.getBufferIdentifier = function() {\n if (this.bytes_.length < this.position_ + flatbuffers.SIZEOF_INT +\n flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error(\n 'FlatBuffers: ByteBuffer is too short to contain an identifier.');\n }\n var result = \"\";\n for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {\n result += String.fromCharCode(\n this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i));\n }\n return result;\n};\n\n/**\n * Look up a field in the vtable, return an offset into the object, or 0 if the\n * field is not present.\n *\n * @param {number} bb_pos\n * @param {number} vtable_offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__offset = function(bb_pos, vtable_offset) {\n var vtable = bb_pos - this.readInt32(bb_pos);\n return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\n};\n\n/**\n * Initialize any Table-derived type to point to the union at the given offset.\n *\n * @param {flatbuffers.Table} t\n * @param {number} offset\n * @returns {flatbuffers.Table}\n */\nflatbuffers.ByteBuffer.prototype.__union = function(t, offset) {\n t.bb_pos = offset + this.readInt32(offset);\n t.bb = this;\n return t;\n};\n\n/**\n * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n * This allocates a new string and converts to wide chars upon each access.\n *\n * To avoid the conversion to UTF-16, pass flatbuffers.Encoding.UTF8_BYTES as\n * the \"optionalEncoding\" argument. This is useful for avoiding conversion to\n * and from UTF-16 when the data will just be packaged back up in another\n * FlatBuffer later on.\n *\n * @param {number} offset\n * @param {flatbuffers.Encoding=} opt_encoding Defaults to UTF16_STRING\n * @returns {string|Uint8Array}\n */\nflatbuffers.ByteBuffer.prototype.__string = function(offset, opt_encoding) {\n offset += this.readInt32(offset);\n\n var length = this.readInt32(offset);\n var result = '';\n var i = 0;\n\n offset += flatbuffers.SIZEOF_INT;\n\n if (opt_encoding === flatbuffers.Encoding.UTF8_BYTES) {\n return this.bytes_.subarray(offset, offset + length);\n }\n\n while (i < length) {\n var codePoint;\n\n // Decode UTF-8\n var a = this.readUint8(offset + i++);\n if (a < 0xC0) {\n codePoint = a;\n } else {\n var b = this.readUint8(offset + i++);\n if (a < 0xE0) {\n codePoint =\n ((a & 0x1F) << 6) |\n (b & 0x3F);\n } else {\n var c = this.readUint8(offset + i++);\n if (a < 0xF0) {\n codePoint =\n ((a & 0x0F) << 12) |\n ((b & 0x3F) << 6) |\n (c & 0x3F);\n } else {\n var d = this.readUint8(offset + i++);\n codePoint =\n ((a & 0x07) << 18) |\n ((b & 0x3F) << 12) |\n ((c & 0x3F) << 6) |\n (d & 0x3F);\n }\n }\n }\n\n // Encode UTF-16\n if (codePoint < 0x10000) {\n result += String.fromCharCode(codePoint);\n } else {\n codePoint -= 0x10000;\n result += String.fromCharCode(\n (codePoint >> 10) + 0xD800,\n (codePoint & ((1 << 10) - 1)) + 0xDC00);\n }\n }\n\n return result;\n};\n\n/**\n * Retrieve the relative offset stored at \"offset\"\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__indirect = function(offset) {\n return offset + this.readInt32(offset);\n};\n\n/**\n * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n *\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__vector = function(offset) {\n return offset + this.readInt32(offset) + flatbuffers.SIZEOF_INT; // data starts after the length\n};\n\n/**\n * Get the length of a vector whose offset is stored at \"offset\" in this object.\n *\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__vector_len = function(offset) {\n return this.readInt32(offset + this.readInt32(offset));\n};\n\n/**\n * @param {string} ident\n * @returns {boolean}\n */\nflatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) {\n if (ident.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n }\n for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {\n if (ident.charCodeAt(i) != this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * A helper function to avoid generated code depending on this file directly.\n *\n * @param {number} low\n * @param {number} high\n * @returns {flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.createLong = function(low, high) {\n return flatbuffers.Long.create(low, high);\n};\n\n// Exports for Node.js and RequireJS\nexport { flatbuffers };\n\n/// @endcond\n/// @}\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { toUint8Array } from './buffer';\nimport {\n TextDecoder as TextDecoderPolyfill,\n TextEncoder as TextEncoderPolyfill,\n} from 'text-encoding-utf-8';\n\n/** @ignore @suppress {missingRequire} */\nconst _Buffer = typeof Buffer === 'function' ? Buffer : null;\n/** @ignore */\nconst useNativeEncoders = typeof TextDecoder === 'function' && typeof TextEncoder === 'function';\n\n/** @ignore */\nexport const decodeUtf8 = ((TextDecoder) => {\n if (useNativeEncoders || !_Buffer) {\n const decoder = new TextDecoder('utf-8');\n return (buffer?: ArrayBuffer | ArrayBufferView) => decoder.decode(buffer);\n }\n return (input: ArrayBufferLike | ArrayBufferView) => {\n const { buffer, byteOffset, length } = toUint8Array(input);\n return _Buffer.from(buffer, byteOffset, length).toString();\n };\n})(typeof TextDecoder !== 'undefined' ? TextDecoder : TextDecoderPolyfill);\n\n/** @ignore */\nexport const encodeUtf8 = ((TextEncoder) => {\n if (useNativeEncoders || !_Buffer) {\n const encoder = new TextEncoder();\n return (value?: string) => encoder.encode(value);\n }\n return (input = '') => toUint8Array(_Buffer.from(input, 'utf8'));\n})(typeof TextEncoder !== 'undefined' ? TextEncoder : TextEncoderPolyfill);\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './adapters';\n\n/** @ignore */\nexport const ITERATOR_DONE: any = Object.freeze({ done: true, value: void (0) });\n\n/** @ignore */\nexport type FileHandle = import('fs').promises.FileHandle;\n/** @ignore */\nexport type ArrowJSONLike = { schema: any; batches?: any[]; dictionaries?: any[]; };\n/** @ignore */\nexport type ReadableDOMStreamOptions = { type: 'bytes' | undefined, autoAllocateChunkSize?: number, highWaterMark?: number };\n\n/** @ignore */\nexport class ArrowJSON {\n // @ts-ignore\n constructor(private _json: ArrowJSONLike) {}\n public get schema(): any { return this._json['schema']; }\n public get batches(): any[] { return (this._json['batches'] || []) as any[]; }\n public get dictionaries(): any[] { return (this._json['dictionaries'] || []) as any[]; }\n}\n\n/** @ignore */\nexport interface Readable {\n\n readonly closed: Promise;\n cancel(reason?: any): Promise;\n\n read(size?: number | null): Promise;\n peek(size?: number | null): Promise;\n throw(value?: any): Promise>;\n return(value?: any): Promise>;\n next(size?: number | null): Promise>;\n}\n\n/** @ignore */\nexport interface Writable {\n readonly closed: Promise;\n close(): void;\n write(chunk: T): void;\n abort(reason?: any): void;\n}\n\n/** @ignore */\nexport interface ReadableWritable extends Readable, Writable {\n [Symbol.asyncIterator](): AsyncIterableIterator;\n toDOMStream(options?: ReadableDOMStreamOptions): ReadableStream;\n toNodeStream(options?: import('stream').ReadableOptions): import('stream').Readable;\n}\n\n/** @ignore */\nexport abstract class ReadableInterop {\n\n public abstract toDOMStream(options?: ReadableDOMStreamOptions): ReadableStream;\n public abstract toNodeStream(options?: import('stream').ReadableOptions): import('stream').Readable;\n\n public tee(): [ReadableStream, ReadableStream] {\n return this._getDOMStream().tee();\n }\n public pipe(writable: R, options?: { end?: boolean; }) {\n return this._getNodeStream().pipe(writable, options);\n }\n public pipeTo(writable: WritableStream, options?: PipeOptions) { return this._getDOMStream().pipeTo(writable, options); }\n public pipeThrough>(duplex: { writable: WritableStream, readable: R }, options?: PipeOptions) {\n return this._getDOMStream().pipeThrough(duplex, options);\n }\n\n protected _DOMStream?: ReadableStream;\n private _getDOMStream() {\n return this._DOMStream || (this._DOMStream = this.toDOMStream());\n }\n\n protected _nodeStream?: import('stream').Readable;\n private _getNodeStream() {\n return this._nodeStream || (this._nodeStream = this.toNodeStream());\n }\n}\n\n/** @ignore */\ntype Resolution = { resolve: (value?: T | PromiseLike) => void; reject: (reason?: any) => void; };\n\n/** @ignore */\nexport class AsyncQueue extends ReadableInterop\n implements AsyncIterableIterator, ReadableWritable {\n\n protected _values: TWritable[] = [];\n protected _error?: { error: any; };\n protected _closedPromise: Promise;\n protected _closedPromiseResolve?: (value?: any) => void;\n protected resolvers: Resolution>[] = [];\n\n constructor() {\n super();\n this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);\n }\n\n public get closed(): Promise { return this._closedPromise; }\n public async cancel(reason?: any) { await this.return(reason); }\n public write(value: TWritable) {\n if (this._ensureOpen()) {\n this.resolvers.length <= 0\n ? (this._values.push(value))\n : (this.resolvers.shift()!.resolve({ done: false, value } as any));\n }\n }\n public abort(value?: any) {\n if (this._closedPromiseResolve) {\n this.resolvers.length <= 0\n ? (this._error = { error: value })\n : (this.resolvers.shift()!.reject({ done: true, value }));\n }\n }\n public close() {\n if (this._closedPromiseResolve) {\n const { resolvers } = this;\n while (resolvers.length > 0) {\n resolvers.shift()!.resolve(ITERATOR_DONE);\n }\n this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n }\n }\n\n public [Symbol.asyncIterator]() { return this; }\n public toDOMStream(options?: ReadableDOMStreamOptions) {\n return streamAdapters.toDOMStream(\n (this._closedPromiseResolve || this._error)\n ? (this as AsyncIterable)\n : (this._values as any) as Iterable,\n options);\n }\n public toNodeStream(options?: import('stream').ReadableOptions) {\n return streamAdapters.toNodeStream(\n (this._closedPromiseResolve || this._error)\n ? (this as AsyncIterable)\n : (this._values as any) as Iterable,\n options);\n }\n public async throw(_?: any) { await this.abort(_); return ITERATOR_DONE; }\n public async return(_?: any) { await this.close(); return ITERATOR_DONE; }\n\n public async read(size?: number | null): Promise { return (await this.next(size, 'read')).value; }\n public async peek(size?: number | null): Promise { return (await this.next(size, 'peek')).value; }\n public next(..._args: any[]): Promise> {\n if (this._values.length > 0) {\n return Promise.resolve({ done: false, value: this._values.shift()! } as any);\n } else if (this._error) {\n return Promise.reject({ done: true, value: this._error.error });\n } else if (!this._closedPromiseResolve) {\n return Promise.resolve(ITERATOR_DONE);\n } else {\n return new Promise>((resolve, reject) => {\n this.resolvers.push({ resolve, reject });\n });\n }\n }\n\n protected _ensureOpen() {\n if (this._closedPromiseResolve) {\n return true;\n }\n throw new Error(`${this} is closed`);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { ReadableInterop, ArrowJSONLike } from '../io/interfaces';\n\n/** @ignore */\ntype FSReadStream = import('fs').ReadStream;\n/** @ignore */\ntype FileHandle = import('fs').promises.FileHandle;\n\n/** @ignore */\nexport interface Subscription {\n unsubscribe: () => void;\n}\n\n/** @ignore */\nexport interface Observer {\n closed?: boolean;\n next: (value: T) => void;\n error: (err: any) => void;\n complete: () => void;\n}\n\n/** @ignore */\nexport interface Observable {\n subscribe: (observer: Observer) => Subscription;\n}\n\n/** @ignore */\nconst [BigIntCtor, BigIntAvailable] = (() => {\n const BigIntUnavailableError = () => { throw new Error('BigInt is not available in this environment'); };\n function BigIntUnavailable() { throw BigIntUnavailableError(); }\n BigIntUnavailable.asIntN = () => { throw BigIntUnavailableError(); };\n BigIntUnavailable.asUintN = () => { throw BigIntUnavailableError(); };\n return typeof BigInt !== 'undefined' ? [BigInt, true] : [ BigIntUnavailable, false];\n})() as [BigIntConstructor, boolean];\n\n/** @ignore */\nconst [BigInt64ArrayCtor, BigInt64ArrayAvailable] = (() => {\n const BigInt64ArrayUnavailableError = () => { throw new Error('BigInt64Array is not available in this environment'); };\n class BigInt64ArrayUnavailable {\n static get BYTES_PER_ELEMENT() { return 8; }\n static of() { throw BigInt64ArrayUnavailableError(); }\n static from() { throw BigInt64ArrayUnavailableError(); }\n constructor() { throw BigInt64ArrayUnavailableError(); }\n }\n return typeof BigInt64Array !== 'undefined' ? [BigInt64Array, true] : [ BigInt64ArrayUnavailable, false];\n})() as [BigInt64ArrayConstructor, boolean];\n\n/** @ignore */\nconst [BigUint64ArrayCtor, BigUint64ArrayAvailable] = (() => {\n const BigUint64ArrayUnavailableError = () => { throw new Error('BigUint64Array is not available in this environment'); };\n class BigUint64ArrayUnavailable {\n static get BYTES_PER_ELEMENT() { return 8; }\n static of() { throw BigUint64ArrayUnavailableError(); }\n static from() { throw BigUint64ArrayUnavailableError(); }\n constructor() { throw BigUint64ArrayUnavailableError(); }\n }\n return typeof BigUint64Array !== 'undefined' ? [BigUint64Array, true] : [ BigUint64ArrayUnavailable, false];\n})() as [BigUint64ArrayConstructor, boolean];\n\nexport { BigIntCtor as BigInt, BigIntAvailable };\nexport { BigInt64ArrayCtor as BigInt64Array, BigInt64ArrayAvailable };\nexport { BigUint64ArrayCtor as BigUint64Array, BigUint64ArrayAvailable };\n\n/** @ignore */ const isNumber = (x: any) => typeof x === 'number';\n/** @ignore */ const isBoolean = (x: any) => typeof x === 'boolean';\n/** @ignore */ const isFunction = (x: any) => typeof x === 'function';\n/** @ignore */\nexport const isObject = (x: any): x is Object => x != null && Object(x) === x;\n\n/** @ignore */\nexport const isPromise = (x: any): x is PromiseLike => {\n return isObject(x) && isFunction(x.then);\n};\n\n/** @ignore */\nexport const isObservable = (x: any): x is Observable => {\n return isObject(x) && isFunction(x.subscribe);\n};\n\n/** @ignore */\nexport const isIterable = (x: any): x is Iterable => {\n return isObject(x) && isFunction(x[Symbol.iterator]);\n};\n\n/** @ignore */\nexport const isAsyncIterable = (x: any): x is AsyncIterable => {\n return isObject(x) && isFunction(x[Symbol.asyncIterator]);\n};\n\n/** @ignore */\nexport const isArrowJSON = (x: any): x is ArrowJSONLike => {\n return isObject(x) && isObject(x['schema']);\n};\n\n/** @ignore */\nexport const isArrayLike = (x: any): x is ArrayLike => {\n return isObject(x) && isNumber(x['length']);\n};\n\n/** @ignore */\nexport const isIteratorResult = (x: any): x is IteratorResult => {\n return isObject(x) && ('done' in x) && ('value' in x);\n};\n\n/** @ignore */\nexport const isUnderlyingSink = (x: any): x is UnderlyingSink => {\n return isObject(x) &&\n isFunction(x['abort']) &&\n isFunction(x['close']) &&\n isFunction(x['start']) &&\n isFunction(x['write']);\n};\n\n/** @ignore */\nexport const isFileHandle = (x: any): x is FileHandle => {\n return isObject(x) && isFunction(x['stat']) && isNumber(x['fd']);\n};\n\n/** @ignore */\nexport const isFSReadStream = (x: any): x is FSReadStream => {\n return isReadableNodeStream(x) && isNumber(( x)['bytesRead']);\n};\n\n/** @ignore */\nexport const isFetchResponse = (x: any): x is Response => {\n return isObject(x) && isReadableDOMStream(x['body']);\n};\n\n/** @ignore */\nexport const isWritableDOMStream = (x: any): x is WritableStream => {\n return isObject(x) &&\n isFunction(x['abort']) &&\n isFunction(x['getWriter']) &&\n !(x instanceof ReadableInterop);\n};\n\n/** @ignore */\nexport const isReadableDOMStream = (x: any): x is ReadableStream => {\n return isObject(x) &&\n isFunction(x['cancel']) &&\n isFunction(x['getReader']) &&\n !(x instanceof ReadableInterop);\n};\n\n/** @ignore */\nexport const isWritableNodeStream = (x: any): x is NodeJS.WritableStream => {\n return isObject(x) &&\n isFunction(x['end']) &&\n isFunction(x['write']) &&\n isBoolean(x['writable']) &&\n !(x instanceof ReadableInterop);\n};\n\n/** @ignore */\nexport const isReadableNodeStream = (x: any): x is NodeJS.ReadableStream => {\n return isObject(x) &&\n isFunction(x['read']) &&\n isFunction(x['pipe']) &&\n isBoolean(x['readable']) &&\n !(x instanceof ReadableInterop);\n};\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { flatbuffers } from 'flatbuffers';\nimport { encodeUtf8 } from '../util/utf8';\nimport ByteBuffer = flatbuffers.ByteBuffer;\nimport { TypedArray, TypedArrayConstructor } from '../interfaces';\nimport { BigIntArray, BigIntArrayConstructor } from '../interfaces';\nimport { isPromise, isIterable, isAsyncIterable, isIteratorResult, BigInt64Array, BigUint64Array } from './compat';\n\n/** @ignore */\nconst SharedArrayBuf = (typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : ArrayBuffer);\n\n/** @ignore */\nfunction collapseContiguousByteRanges(chunks: Uint8Array[]) {\n let result = chunks[0] ? [chunks[0]] : [];\n let xOffset: number, yOffset: number, xLen: number, yLen: number;\n for (let x, y, i = 0, j = 0, n = chunks.length; ++i < n;) {\n x = result[j];\n y = chunks[i];\n // continue if x and y don't share the same underlying ArrayBuffer, or if x isn't before y\n if (!x || !y || x.buffer !== y.buffer || y.byteOffset < x.byteOffset) {\n y && (result[++j] = y);\n continue;\n }\n ({ byteOffset: xOffset, byteLength: xLen } = x);\n ({ byteOffset: yOffset, byteLength: yLen } = y);\n // continue if the byte ranges of x and y aren't contiguous\n if ((xOffset + xLen) < yOffset || (yOffset + yLen) < xOffset) {\n y && (result[++j] = y);\n continue;\n }\n result[j] = new Uint8Array(x.buffer, xOffset, yOffset - xOffset + yLen);\n }\n return result;\n}\n\n/** @ignore */\nexport function memcpy(target: TTarget, source: TSource, targetByteOffset = 0, sourceByteLength = source.byteLength) {\n const targetByteLength = target.byteLength;\n const dst = new Uint8Array(target.buffer, target.byteOffset, targetByteLength);\n const src = new Uint8Array(source.buffer, source.byteOffset, Math.min(sourceByteLength, targetByteLength));\n dst.set(src, targetByteOffset);\n return target;\n}\n\n/** @ignore */\nexport function joinUint8Arrays(chunks: Uint8Array[], size?: number | null): [Uint8Array, Uint8Array[], number] {\n // collapse chunks that share the same underlying ArrayBuffer and whose byte ranges overlap,\n // to avoid unnecessarily copying the bytes to do this buffer join. This is a common case during\n // streaming, where we may be reading partial byte ranges out of the same underlying ArrayBuffer\n let result = collapseContiguousByteRanges(chunks);\n let byteLength = result.reduce((x, b) => x + b.byteLength, 0);\n let source: Uint8Array, sliced: Uint8Array, buffer: Uint8Array | void;\n let offset = 0, index = -1, length = Math.min(size || Infinity, byteLength);\n for (let n = result.length; ++index < n;) {\n source = result[index];\n sliced = source.subarray(0, Math.min(source.length, length - offset));\n if (length <= (offset + sliced.length)) {\n if (sliced.length < source.length) {\n result[index] = source.subarray(sliced.length);\n } else if (sliced.length === source.length) { index++; }\n buffer ? memcpy(buffer, sliced, offset) : (buffer = sliced);\n break;\n }\n memcpy(buffer || (buffer = new Uint8Array(length)), sliced, offset);\n offset += sliced.length;\n }\n return [buffer || new Uint8Array(0), result.slice(index), byteLength - (buffer ? buffer.byteLength : 0)];\n}\n\n/** @ignore */\nexport type ArrayBufferViewInput = ArrayBufferView | ArrayBufferLike | ArrayBufferView | Iterable | ArrayLike | ByteBuffer | string | null | undefined |\n IteratorResult | ArrayLike | ByteBuffer | string | null | undefined> |\n ReadableStreamReadResult | ArrayLike | ByteBuffer | string | null | undefined> ;\n\n/** @ignore */\nexport function toArrayBufferView(ArrayBufferViewCtor: TypedArrayConstructor, input: ArrayBufferViewInput): T;\nexport function toArrayBufferView(ArrayBufferViewCtor: BigIntArrayConstructor, input: ArrayBufferViewInput): T;\nexport function toArrayBufferView(ArrayBufferViewCtor: any, input: ArrayBufferViewInput) {\n\n let value: any = isIteratorResult(input) ? input.value : input;\n\n if (value instanceof ArrayBufferViewCtor) {\n if (ArrayBufferViewCtor === Uint8Array) {\n // Node's `Buffer` class passes the `instanceof Uint8Array` check, but we need\n // a real Uint8Array, since Buffer#slice isn't the same as Uint8Array#slice :/\n return new ArrayBufferViewCtor(value.buffer, value.byteOffset, value.byteLength);\n }\n return value;\n }\n if (!value) { return new ArrayBufferViewCtor(0); }\n if (typeof value === 'string') { value = encodeUtf8(value); }\n if (value instanceof ArrayBuffer) { return new ArrayBufferViewCtor(value); }\n if (value instanceof SharedArrayBuf) { return new ArrayBufferViewCtor(value); }\n if (value instanceof ByteBuffer) { return toArrayBufferView(ArrayBufferViewCtor, value.bytes()); }\n return !ArrayBuffer.isView(value) ? ArrayBufferViewCtor.from(value) : value.byteLength <= 0 ? new ArrayBufferViewCtor(0)\n : new ArrayBufferViewCtor(value.buffer, value.byteOffset, value.byteLength / ArrayBufferViewCtor.BYTES_PER_ELEMENT);\n}\n\n/** @ignore */ export const toInt8Array = (input: ArrayBufferViewInput) => toArrayBufferView(Int8Array, input);\n/** @ignore */ export const toInt16Array = (input: ArrayBufferViewInput) => toArrayBufferView(Int16Array, input);\n/** @ignore */ export const toInt32Array = (input: ArrayBufferViewInput) => toArrayBufferView(Int32Array, input);\n/** @ignore */ export const toBigInt64Array = (input: ArrayBufferViewInput) => toArrayBufferView(BigInt64Array, input);\n/** @ignore */ export const toUint8Array = (input: ArrayBufferViewInput) => toArrayBufferView(Uint8Array, input);\n/** @ignore */ export const toUint16Array = (input: ArrayBufferViewInput) => toArrayBufferView(Uint16Array, input);\n/** @ignore */ export const toUint32Array = (input: ArrayBufferViewInput) => toArrayBufferView(Uint32Array, input);\n/** @ignore */ export const toBigUint64Array = (input: ArrayBufferViewInput) => toArrayBufferView(BigUint64Array, input);\n/** @ignore */ export const toFloat32Array = (input: ArrayBufferViewInput) => toArrayBufferView(Float32Array, input);\n/** @ignore */ export const toFloat64Array = (input: ArrayBufferViewInput) => toArrayBufferView(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArray = (input: ArrayBufferViewInput) => toArrayBufferView(Uint8ClampedArray, input);\n\n/** @ignore */\ntype ArrayBufferViewIteratorInput = Iterable | ArrayBufferViewInput;\n\n/** @ignore */\nconst pump = | AsyncIterator>(iterator: T) => { iterator.next(); return iterator; };\n\n/** @ignore */\nexport function* toArrayBufferViewIterator(ArrayCtor: TypedArrayConstructor, source: ArrayBufferViewIteratorInput) {\n\n const wrap = function*(x: T) { yield x; };\n const buffers: Iterable =\n (typeof source === 'string') ? wrap(source)\n : (ArrayBuffer.isView(source)) ? wrap(source)\n : (source instanceof ArrayBuffer) ? wrap(source)\n : (source instanceof SharedArrayBuf) ? wrap(source)\n : !isIterable(source) ? wrap(source) : source;\n\n yield* pump((function* (it) {\n let r: IteratorResult = null;\n do {\n r = it.next(yield toArrayBufferView(ArrayCtor, r));\n } while (!r.done);\n })(buffers[Symbol.iterator]()));\n}\n\n/** @ignore */ export const toInt8ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Int8Array, input);\n/** @ignore */ export const toInt16ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Int16Array, input);\n/** @ignore */ export const toInt32ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Int32Array, input);\n/** @ignore */ export const toUint8ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Uint8Array, input);\n/** @ignore */ export const toUint16ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Uint16Array, input);\n/** @ignore */ export const toUint32ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Uint32Array, input);\n/** @ignore */ export const toFloat32ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Float32Array, input);\n/** @ignore */ export const toFloat64ArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArrayIterator = (input: ArrayBufferViewIteratorInput) => toArrayBufferViewIterator(Uint8ClampedArray, input);\n\n/** @ignore */\ntype ArrayBufferViewAsyncIteratorInput = AsyncIterable | Iterable | PromiseLike | ArrayBufferViewInput;\n\n/** @ignore */\nexport async function* toArrayBufferViewAsyncIterator(ArrayCtor: TypedArrayConstructor, source: ArrayBufferViewAsyncIteratorInput): AsyncIterableIterator {\n\n // if a Promise, unwrap the Promise and iterate the resolved value\n if (isPromise(source)) {\n return yield* toArrayBufferViewAsyncIterator(ArrayCtor, await source);\n }\n\n const wrap = async function*(x: T) { yield await x; };\n const emit = async function* >(source: T) {\n yield* pump((function*(it: Iterator) {\n let r: IteratorResult = null;\n do {\n r = it.next(yield r && r.value);\n } while (!r.done);\n })(source[Symbol.iterator]()));\n };\n\n const buffers: AsyncIterable =\n (typeof source === 'string') ? wrap(source) // if string, wrap in an AsyncIterableIterator\n : (ArrayBuffer.isView(source)) ? wrap(source) // if TypedArray, wrap in an AsyncIterableIterator\n : (source instanceof ArrayBuffer) ? wrap(source) // if ArrayBuffer, wrap in an AsyncIterableIterator\n : (source instanceof SharedArrayBuf) ? wrap(source) // if SharedArrayBuffer, wrap in an AsyncIterableIterator\n : isIterable(source) ? emit(source) // If Iterable, wrap in an AsyncIterableIterator and compose the `next` values\n : !isAsyncIterable(source) ? wrap(source) // If not an AsyncIterable, treat as a sentinel and wrap in an AsyncIterableIterator\n : source; // otherwise if AsyncIterable, use it\n\n yield* pump((async function* (it) {\n let r: IteratorResult = null;\n do {\n r = await it.next(yield toArrayBufferView(ArrayCtor, r));\n } while (!r.done);\n })(buffers[Symbol.asyncIterator]()));\n}\n\n/** @ignore */ export const toInt8ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Int8Array, input);\n/** @ignore */ export const toInt16ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Int16Array, input);\n/** @ignore */ export const toInt32ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Int32Array, input);\n/** @ignore */ export const toUint8ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Uint8Array, input);\n/** @ignore */ export const toUint16ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Uint16Array, input);\n/** @ignore */ export const toUint32ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Uint32Array, input);\n/** @ignore */ export const toFloat32ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Float32Array, input);\n/** @ignore */ export const toFloat64ArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArrayAsyncIterator = (input: ArrayBufferViewAsyncIteratorInput) => toArrayBufferViewAsyncIterator(Uint8ClampedArray, input);\n\n/** @ignore */\nexport function rebaseValueOffsets(offset: number, length: number, valueOffsets: Int32Array) {\n // If we have a non-zero offset, create a new offsets array with the values\n // shifted by the start offset, such that the new start offset is 0\n if (offset !== 0) {\n valueOffsets = valueOffsets.slice(0, length + 1);\n for (let i = -1; ++i <= length;) {\n valueOffsets[i] += offset;\n }\n }\n return valueOffsets;\n}\n\n/** @ignore */\nexport function compareArrayLike>(a: T, b: T) {\n let i = 0, n = a.length;\n if (n !== b.length) { return false; }\n if (n > 0) {\n do { if (a[i] !== b[i]) { return false; } } while (++i < n);\n }\n return true;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport {\n toUint8Array,\n joinUint8Arrays,\n ArrayBufferViewInput,\n toUint8ArrayIterator,\n toUint8ArrayAsyncIterator\n} from '../util/buffer';\n\nimport { ReadableDOMStreamOptions } from './interfaces';\n\n/** @ignore */\nexport default {\n fromIterable(source: Iterable | T): IterableIterator {\n return pump(fromIterable(source));\n },\n fromAsyncIterable(source: AsyncIterable | PromiseLike): AsyncIterableIterator {\n return pump(fromAsyncIterable(source));\n },\n fromDOMStream(source: ReadableStream): AsyncIterableIterator {\n return pump(fromDOMStream(source));\n },\n fromNodeStream(stream: NodeJS.ReadableStream): AsyncIterableIterator {\n return pump(fromNodeStream(stream));\n },\n // @ts-ignore\n toDOMStream(source: Iterable | AsyncIterable, options?: ReadableDOMStreamOptions): ReadableStream {\n throw new Error(`\"toDOMStream\" not available in this environment`);\n },\n // @ts-ignore\n toNodeStream(source: Iterable | AsyncIterable, options?: import('stream').ReadableOptions): import('stream').Readable {\n throw new Error(`\"toNodeStream\" not available in this environment`);\n },\n};\n\n/** @ignore */\nconst pump = | AsyncIterator>(iterator: T) => { iterator.next(); return iterator; };\n\n/** @ignore */\nfunction* fromIterable(source: Iterable | T): IterableIterator {\n\n let done: boolean, threw = false;\n let buffers: Uint8Array[] = [], buffer: Uint8Array;\n let cmd: 'peek' | 'read', size: number, bufferLength = 0;\n\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n\n // Yield so the caller can inject the read command before creating the source Iterator\n ({ cmd, size } = yield null);\n\n // initialize the iterator\n let it = toUint8ArrayIterator(source)[Symbol.iterator]();\n\n try {\n do {\n // read the next value\n ({ done, value: buffer } = isNaN(size - bufferLength) ?\n it.next(undefined) : it.next(size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n } catch (e) {\n (threw = true) && (typeof it.throw === 'function') && (it.throw(e));\n } finally {\n (threw === false) && (typeof it.return === 'function') && (it.return());\n }\n}\n\n/** @ignore */\nasync function* fromAsyncIterable(source: AsyncIterable | PromiseLike): AsyncIterableIterator {\n\n let done: boolean, threw = false;\n let buffers: Uint8Array[] = [], buffer: Uint8Array;\n let cmd: 'peek' | 'read', size: number, bufferLength = 0;\n\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n\n // Yield so the caller can inject the read command before creating the source AsyncIterator\n ({ cmd, size } = yield null);\n\n // initialize the iterator\n let it = toUint8ArrayAsyncIterator(source)[Symbol.asyncIterator]();\n\n try {\n do {\n // read the next value\n ({ done, value: buffer } = isNaN(size - bufferLength)\n ? await it.next(undefined)\n : await it.next(size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n } catch (e) {\n (threw = true) && (typeof it.throw === 'function') && (await it.throw(e));\n } finally {\n (threw === false) && (typeof it.return === 'function') && (await it.return());\n }\n}\n\n// All this manual Uint8Array chunk management can be avoided if/when engines\n// add support for ArrayBuffer.transfer() or ArrayBuffer.prototype.realloc():\n// https://github.com/domenic/proposal-arraybuffer-transfer\n/** @ignore */\nasync function* fromDOMStream(source: ReadableStream): AsyncIterableIterator {\n\n let done = false, threw = false;\n let buffers: Uint8Array[] = [], buffer: Uint8Array;\n let cmd: 'peek' | 'read', size: number, bufferLength = 0;\n\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n\n // Yield so the caller can inject the read command before we establish the ReadableStream lock\n ({ cmd, size } = yield null);\n\n // initialize the reader and lock the stream\n let it = new AdaptiveByteReader(source);\n\n try {\n do {\n // read the next value\n ({ done, value: buffer } = isNaN(size - bufferLength)\n ? await it['read'](undefined)\n : await it['read'](size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(toUint8Array(buffer));\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n } catch (e) {\n (threw = true) && (await it['cancel'](e));\n } finally {\n (threw === false) ? (await it['cancel']())\n : source['locked'] && it.releaseLock();\n }\n}\n\n/** @ignore */\nclass AdaptiveByteReader {\n\n private supportsBYOB: boolean;\n private byobReader: ReadableStreamBYOBReader | null = null;\n private defaultReader: ReadableStreamDefaultReader | null = null;\n private reader: ReadableStreamBYOBReader | ReadableStreamDefaultReader | null;\n\n constructor(private source: ReadableStream) {\n try {\n this.supportsBYOB = !!(this.reader = this.getBYOBReader());\n } catch (e) {\n this.supportsBYOB = !!!(this.reader = this.getDefaultReader());\n }\n }\n\n get closed(): Promise {\n return this.reader ? this.reader['closed'].catch(() => {}) : Promise.resolve();\n }\n\n releaseLock(): void {\n if (this.reader) {\n this.reader.releaseLock();\n }\n this.reader = this.byobReader = this.defaultReader = null;\n }\n\n async cancel(reason?: any): Promise {\n const { reader, source } = this;\n reader && (await reader['cancel'](reason).catch(() => {}));\n source && (source['locked'] && this.releaseLock());\n }\n\n async read(size?: number): Promise> {\n if (size === 0) {\n return { done: this.reader == null, value: new Uint8Array(0) };\n }\n const result = !this.supportsBYOB || typeof size !== 'number'\n ? await this.getDefaultReader().read()\n : await this.readFromBYOBReader(size);\n !result.done && (result.value = toUint8Array(result as ReadableStreamReadResult));\n return result as ReadableStreamReadResult;\n }\n\n private getDefaultReader() {\n if (this.byobReader) { this.releaseLock(); }\n if (!this.defaultReader) {\n this.defaultReader = this.source['getReader']();\n // We have to catch and swallow errors here to avoid uncaught promise rejection exceptions\n // that seem to be raised when we call `releaseLock()` on this reader. I'm still mystified\n // about why these errors are raised, but I'm sure there's some important spec reason that\n // I haven't considered. I hate to employ such an anti-pattern here, but it seems like the\n // only solution in this case :/\n this.defaultReader['closed'].catch(() => {});\n }\n return (this.reader = this.defaultReader);\n }\n\n private getBYOBReader() {\n if (this.defaultReader) { this.releaseLock(); }\n if (!this.byobReader) {\n this.byobReader = this.source['getReader']({ mode: 'byob' });\n // We have to catch and swallow errors here to avoid uncaught promise rejection exceptions\n // that seem to be raised when we call `releaseLock()` on this reader. I'm still mystified\n // about why these errors are raised, but I'm sure there's some important spec reason that\n // I haven't considered. I hate to employ such an anti-pattern here, but it seems like the\n // only solution in this case :/\n this.byobReader['closed'].catch(() => {});\n }\n return (this.reader = this.byobReader);\n }\n\n // This strategy plucked from the example in the streams spec:\n // https://streams.spec.whatwg.org/#example-manual-read-bytes\n private async readFromBYOBReader(size: number) {\n return await readInto(this.getBYOBReader(), new ArrayBuffer(size), 0, size);\n }\n}\n\n/** @ignore */\nasync function readInto(reader: ReadableStreamBYOBReader, buffer: ArrayBufferLike, offset: number, size: number): Promise> {\n if (offset >= size) {\n return { done: false, value: new Uint8Array(buffer, 0, size) };\n }\n const { done, value } = await reader.read(new Uint8Array(buffer, offset, size - offset));\n if (((offset += value.byteLength) < size) && !done) {\n return await readInto(reader, value.buffer, offset, size);\n }\n return { done, value: new Uint8Array(value.buffer, 0, offset) };\n}\n\n/** @ignore */\ntype EventName = 'end' | 'error' | 'readable';\n/** @ignore */\ntype Event = [EventName, (_: any) => void, Promise<[EventName, Error | null]>];\n/** @ignore */\nconst onEvent = (stream: NodeJS.ReadableStream, event: T) => {\n let handler = (_: any) => resolve([event, _]);\n let resolve: (value?: [T, any] | PromiseLike<[T, any]>) => void;\n return [event, handler, new Promise<[T, any]>(\n (r) => (resolve = r) && stream['once'](event, handler)\n )] as Event;\n};\n\n/** @ignore */\nasync function* fromNodeStream(stream: NodeJS.ReadableStream): AsyncIterableIterator {\n\n let events: Event[] = [];\n let event: EventName = 'error';\n let done = false, err: Error | null = null;\n let cmd: 'peek' | 'read', size: number, bufferLength = 0;\n let buffers: Uint8Array[] = [], buffer: Uint8Array | Buffer | string;\n\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n\n // Yield so the caller can inject the read command before we\n // add the listener for the source stream's 'readable' event.\n ({ cmd, size } = yield null);\n\n // ignore stdin if it's a TTY\n if ((stream as any)['isTTY']) { return yield new Uint8Array(0); }\n\n try {\n // initialize the stream event handlers\n events[0] = onEvent(stream, 'end');\n events[1] = onEvent(stream, 'error');\n\n do {\n events[2] = onEvent(stream, 'readable');\n\n // wait on the first message event from the stream\n [event, err] = await Promise.race(events.map((x) => x[2]));\n\n // if the stream emitted an Error, rethrow it\n if (event === 'error') { break; }\n if (!(done = event === 'end')) {\n // If the size is NaN, request to read everything in the stream's internal buffer\n if (!isFinite(size - bufferLength)) {\n buffer = toUint8Array(stream['read'](undefined));\n } else {\n buffer = toUint8Array(stream['read'](size - bufferLength));\n // If the byteLength is 0, then the requested amount is more than the stream has\n // in its internal buffer. In this case the stream needs a \"kick\" to tell it to\n // continue emitting readable events, so request to read everything the stream\n // has in its internal buffer right now.\n if (buffer.byteLength < (size - bufferLength)) {\n buffer = toUint8Array(stream['read'](undefined));\n }\n }\n // if chunk is not null or empty, push it onto the queue\n if (buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n } finally {\n await cleanup(events, event === 'error' ? err : null);\n }\n\n function cleanup(events: Event[], err?: T) {\n buffer = buffers = null;\n return new Promise(async (resolve, reject) => {\n for (const [evt, fn] of events) {\n stream['off'](evt, fn);\n }\n try {\n // Some stream implementations don't call the destroy callback,\n // because it's really a node-internal API. Just calling `destroy`\n // here should be enough to conform to the ReadableStream contract\n const destroy = (stream as any)['destroy'];\n destroy && destroy.call(stream, err);\n err = undefined;\n } catch (e) { err = e || err; } finally {\n err != null ? reject(err) : resolve();\n }\n });\n }\n}\n","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { DataType } from './type';\nimport { Chunked } from './vector/chunked';\n\n/** @ignore */\nexport interface Clonable {\n clone(...args: any[]): R;\n}\n\n/** @ignore */\nexport interface Sliceable {\n slice(begin?: number, end?: number): R;\n}\n\n/** @ignore */\nexport interface Applicative {\n concat(...others: Vector[]): R;\n readonly [Symbol.isConcatSpreadable]: boolean;\n}\n\nexport interface AbstractVector\n extends Clonable>,\n Sliceable>,\n Applicative> {\n\n readonly TType: T['TType'];\n readonly TArray: T['TArray'];\n readonly TValue: T['TValue'];\n}\n\nexport abstract class AbstractVector implements Iterable {\n\n public abstract readonly data: Data;\n public abstract readonly type: T;\n public abstract readonly typeId: T['TType'];\n public abstract readonly length: number;\n public abstract readonly stride: number;\n public abstract readonly nullCount: number;\n public abstract readonly byteLength: number;\n public abstract readonly numChildren: number;\n\n public abstract readonly ArrayType: T['ArrayType'];\n\n public abstract isValid(index: number): boolean;\n public abstract get(index: number): T['TValue'] | null;\n public abstract set(index: number, value: T['TValue'] | null): void;\n public abstract indexOf(value: T['TValue'] | null, fromIndex?: number): number;\n public abstract [Symbol.iterator](): IterableIterator;\n\n public abstract toArray(): T['TArray'];\n public abstract getChildAt(index: number): Vector | null;\n}\n\nexport { AbstractVector as Vector };\n","/* tslint:disable:class-name */\n\n// automatically generated by the FlatBuffers compiler, do not modify\n\nimport { flatbuffers } from 'flatbuffers';\n/**\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum MetadataVersion {\n /**\n * 0.1.0\n */\n V1 = 0,\n\n /**\n * 0.2.0\n */\n V2 = 1,\n\n /**\n * 0.3.0 -> 0.7.1\n */\n V3 = 2,\n\n /**\n * >= 0.8.0\n */\n V4 = 3\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum UnionMode {\n Sparse = 0,\n Dense = 1\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum Precision {\n HALF = 0,\n SINGLE = 1,\n DOUBLE = 2\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum DateUnit {\n DAY = 0,\n MILLISECOND = 1\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum TimeUnit {\n SECOND = 0,\n MILLISECOND = 1,\n MICROSECOND = 2,\n NANOSECOND = 3\n }\n}\n\n/**\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum IntervalUnit {\n YEAR_MONTH = 0,\n DAY_TIME = 1\n }\n}\n\n/**\n * ----------------------------------------------------------------------\n * Top-level Type value, enabling extensible type-specific metadata. We can\n * add new logical types to Type without breaking backwards compatibility\n *\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum Type {\n NONE = 0,\n Null = 1,\n Int = 2,\n FloatingPoint = 3,\n Binary = 4,\n Utf8 = 5,\n Bool = 6,\n Decimal = 7,\n Date = 8,\n Time = 9,\n Timestamp = 10,\n Interval = 11,\n List = 12,\n Struct_ = 13,\n Union = 14,\n FixedSizeBinary = 15,\n FixedSizeList = 16,\n Map = 17,\n Duration = 18,\n LargeBinary = 19,\n LargeUtf8 = 20,\n LargeList = 21\n }\n}\n\n/**\n * ----------------------------------------------------------------------\n * Endianness of the platform producing the data\n *\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum Endianness {\n Little = 0,\n Big = 1\n }\n}\n\n/**\n * These are stored in the flatbuffer in the Type union below\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Null {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Null\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Null {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Null= obj\n * @returns Null\n */\n static getRootAsNull(bb: flatbuffers.ByteBuffer, obj?: Null): Null {\n return (obj || new Null).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startNull(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endNull(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createNull(builder: flatbuffers.Builder): flatbuffers.Offset {\n Null.startNull(builder);\n return Null.endNull(builder);\n }\n }\n}\n/**\n * A Struct_ in the flatbuffer metadata is the same as an Arrow Struct\n * (according to the physical memory layout). We used Struct_ here as\n * Struct is a reserved word in Flatbuffers\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Struct_ {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Struct_\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Struct_ {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Struct_= obj\n * @returns Struct_\n */\n static getRootAsStruct_(bb: flatbuffers.ByteBuffer, obj?: Struct_): Struct_ {\n return (obj || new Struct_).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startStruct_(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endStruct_(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createStruct_(builder: flatbuffers.Builder): flatbuffers.Offset {\n Struct_.startStruct_(builder);\n return Struct_.endStruct_(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class List {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns List\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): List {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param List= obj\n * @returns List\n */\n static getRootAsList(bb: flatbuffers.ByteBuffer, obj?: List): List {\n return (obj || new List).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startList(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endList(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createList(builder: flatbuffers.Builder): flatbuffers.Offset {\n List.startList(builder);\n return List.endList(builder);\n }\n }\n}\n/**\n * Same as List, but with 64-bit offsets, allowing to represent\n * extremely large data values.\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class LargeList {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns LargeList\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): LargeList {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param LargeList= obj\n * @returns LargeList\n */\n static getRootAsLargeList(bb: flatbuffers.ByteBuffer, obj?: LargeList): LargeList {\n return (obj || new LargeList).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startLargeList(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endLargeList(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createLargeList(builder: flatbuffers.Builder): flatbuffers.Offset {\n LargeList.startLargeList(builder);\n return LargeList.endLargeList(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class FixedSizeList {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FixedSizeList\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): FixedSizeList {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param FixedSizeList= obj\n * @returns FixedSizeList\n */\n static getRootAsFixedSizeList(bb: flatbuffers.ByteBuffer, obj?: FixedSizeList): FixedSizeList {\n return (obj || new FixedSizeList).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * Number of list items per value\n *\n * @returns number\n */\n listSize(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startFixedSizeList(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number listSize\n */\n static addListSize(builder: flatbuffers.Builder, listSize: number) {\n builder.addFieldInt32(0, listSize, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFixedSizeList(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createFixedSizeList(builder: flatbuffers.Builder, listSize: number): flatbuffers.Offset {\n FixedSizeList.startFixedSizeList(builder);\n FixedSizeList.addListSize(builder, listSize);\n return FixedSizeList.endFixedSizeList(builder);\n }\n }\n}\n/**\n * A Map is a logical nested type that is represented as\n *\n * List>\n *\n * In this layout, the keys and values are each respectively contiguous. We do\n * not constrain the key and value types, so the application is responsible\n * for ensuring that the keys are hashable and unique. Whether the keys are sorted\n * may be set in the metadata for this field\n *\n * In a Field with Map type, the Field has a child Struct field, which then\n * has two children: key type and the second the value type. The names of the\n * child fields may be respectively \"entry\", \"key\", and \"value\", but this is\n * not enforced\n *\n * Map\n * - child[0] entry: Struct\n * - child[0] key: K\n * - child[1] value: V\n *\n * Neither the \"entry\" field nor the \"key\" field may be nullable.\n *\n * The metadata is structured so that Arrow systems without special handling\n * for Map can make Map an alias for List. The \"layout\" attribute for the Map\n * field must have the same contents as a List.\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Map {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Map\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Map {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Map= obj\n * @returns Map\n */\n static getRootAsMap(bb: flatbuffers.ByteBuffer, obj?: Map): Map {\n return (obj || new Map).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * Set to true if the keys within each value are sorted\n *\n * @returns boolean\n */\n keysSorted(): boolean {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startMap(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param boolean keysSorted\n */\n static addKeysSorted(builder: flatbuffers.Builder, keysSorted: boolean) {\n builder.addFieldInt8(0, +keysSorted, +false);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endMap(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createMap(builder: flatbuffers.Builder, keysSorted: boolean): flatbuffers.Offset {\n Map.startMap(builder);\n Map.addKeysSorted(builder, keysSorted);\n return Map.endMap(builder);\n }\n }\n}\n/**\n * A union is a complex type with children in Field\n * By default ids in the type vector refer to the offsets in the children\n * optionally typeIds provides an indirection between the child offset and the type id\n * for each child typeIds[offset] is the id used in the type vector\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Union {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Union\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Union {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Union= obj\n * @returns Union\n */\n static getRootAsUnion(bb: flatbuffers.ByteBuffer, obj?: Union): Union {\n return (obj || new Union).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.UnionMode\n */\n mode(): org.apache.arrow.flatbuf.UnionMode {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.UnionMode.Sparse;\n }\n\n /**\n * @param number index\n * @returns number\n */\n typeIds(index: number): number | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt32(this.bb!.__vector(this.bb_pos + offset) + index * 4) : 0;\n }\n\n /**\n * @returns number\n */\n typeIdsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns Int32Array\n */\n typeIdsArray(): Int32Array | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? new Int32Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startUnion(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.UnionMode mode\n */\n static addMode(builder: flatbuffers.Builder, mode: org.apache.arrow.flatbuf.UnionMode) {\n builder.addFieldInt16(0, mode, org.apache.arrow.flatbuf.UnionMode.Sparse);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset typeIdsOffset\n */\n static addTypeIds(builder: flatbuffers.Builder, typeIdsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, typeIdsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createTypeIdsVector(builder: flatbuffers.Builder, data: number[] | Int32Array): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt32(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startTypeIdsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endUnion(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createUnion(builder: flatbuffers.Builder, mode: org.apache.arrow.flatbuf.UnionMode, typeIdsOffset: flatbuffers.Offset): flatbuffers.Offset {\n Union.startUnion(builder);\n Union.addMode(builder, mode);\n Union.addTypeIds(builder, typeIdsOffset);\n return Union.endUnion(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Int {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Int\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Int {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Int= obj\n * @returns Int\n */\n static getRootAsInt(bb: flatbuffers.ByteBuffer, obj?: Int): Int {\n return (obj || new Int).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns number\n */\n bitWidth(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @returns boolean\n */\n isSigned(): boolean {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startInt(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number bitWidth\n */\n static addBitWidth(builder: flatbuffers.Builder, bitWidth: number) {\n builder.addFieldInt32(0, bitWidth, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param boolean isSigned\n */\n static addIsSigned(builder: flatbuffers.Builder, isSigned: boolean) {\n builder.addFieldInt8(1, +isSigned, +false);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endInt(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createInt(builder: flatbuffers.Builder, bitWidth: number, isSigned: boolean): flatbuffers.Offset {\n Int.startInt(builder);\n Int.addBitWidth(builder, bitWidth);\n Int.addIsSigned(builder, isSigned);\n return Int.endInt(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class FloatingPoint {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FloatingPoint\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): FloatingPoint {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param FloatingPoint= obj\n * @returns FloatingPoint\n */\n static getRootAsFloatingPoint(bb: flatbuffers.ByteBuffer, obj?: FloatingPoint): FloatingPoint {\n return (obj || new FloatingPoint).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.Precision\n */\n precision(): org.apache.arrow.flatbuf.Precision {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.Precision.HALF;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startFloatingPoint(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.Precision precision\n */\n static addPrecision(builder: flatbuffers.Builder, precision: org.apache.arrow.flatbuf.Precision) {\n builder.addFieldInt16(0, precision, org.apache.arrow.flatbuf.Precision.HALF);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFloatingPoint(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createFloatingPoint(builder: flatbuffers.Builder, precision: org.apache.arrow.flatbuf.Precision): flatbuffers.Offset {\n FloatingPoint.startFloatingPoint(builder);\n FloatingPoint.addPrecision(builder, precision);\n return FloatingPoint.endFloatingPoint(builder);\n }\n }\n}\n/**\n * Unicode with UTF-8 encoding\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Utf8 {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Utf8\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Utf8 {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Utf8= obj\n * @returns Utf8\n */\n static getRootAsUtf8(bb: flatbuffers.ByteBuffer, obj?: Utf8): Utf8 {\n return (obj || new Utf8).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startUtf8(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endUtf8(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createUtf8(builder: flatbuffers.Builder): flatbuffers.Offset {\n Utf8.startUtf8(builder);\n return Utf8.endUtf8(builder);\n }\n }\n}\n/**\n * Opaque binary data\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Binary {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Binary\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Binary {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Binary= obj\n * @returns Binary\n */\n static getRootAsBinary(bb: flatbuffers.ByteBuffer, obj?: Binary): Binary {\n return (obj || new Binary).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startBinary(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endBinary(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createBinary(builder: flatbuffers.Builder): flatbuffers.Offset {\n Binary.startBinary(builder);\n return Binary.endBinary(builder);\n }\n }\n}\n/**\n * Same as Utf8, but with 64-bit offsets, allowing to represent\n * extremely large data values.\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class LargeUtf8 {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns LargeUtf8\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): LargeUtf8 {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param LargeUtf8= obj\n * @returns LargeUtf8\n */\n static getRootAsLargeUtf8(bb: flatbuffers.ByteBuffer, obj?: LargeUtf8): LargeUtf8 {\n return (obj || new LargeUtf8).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startLargeUtf8(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endLargeUtf8(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createLargeUtf8(builder: flatbuffers.Builder): flatbuffers.Offset {\n LargeUtf8.startLargeUtf8(builder);\n return LargeUtf8.endLargeUtf8(builder);\n }\n }\n}\n/**\n * Same as Binary, but with 64-bit offsets, allowing to represent\n * extremely large data values.\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class LargeBinary {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns LargeBinary\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): LargeBinary {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param LargeBinary= obj\n * @returns LargeBinary\n */\n static getRootAsLargeBinary(bb: flatbuffers.ByteBuffer, obj?: LargeBinary): LargeBinary {\n return (obj || new LargeBinary).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startLargeBinary(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endLargeBinary(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createLargeBinary(builder: flatbuffers.Builder): flatbuffers.Offset {\n LargeBinary.startLargeBinary(builder);\n return LargeBinary.endLargeBinary(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class FixedSizeBinary {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FixedSizeBinary\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): FixedSizeBinary {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param FixedSizeBinary= obj\n * @returns FixedSizeBinary\n */\n static getRootAsFixedSizeBinary(bb: flatbuffers.ByteBuffer, obj?: FixedSizeBinary): FixedSizeBinary {\n return (obj || new FixedSizeBinary).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * Number of bytes per value\n *\n * @returns number\n */\n byteWidth(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startFixedSizeBinary(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number byteWidth\n */\n static addByteWidth(builder: flatbuffers.Builder, byteWidth: number) {\n builder.addFieldInt32(0, byteWidth, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFixedSizeBinary(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createFixedSizeBinary(builder: flatbuffers.Builder, byteWidth: number): flatbuffers.Offset {\n FixedSizeBinary.startFixedSizeBinary(builder);\n FixedSizeBinary.addByteWidth(builder, byteWidth);\n return FixedSizeBinary.endFixedSizeBinary(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Bool {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Bool\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Bool {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Bool= obj\n * @returns Bool\n */\n static getRootAsBool(bb: flatbuffers.ByteBuffer, obj?: Bool): Bool {\n return (obj || new Bool).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startBool(builder: flatbuffers.Builder) {\n builder.startObject(0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endBool(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createBool(builder: flatbuffers.Builder): flatbuffers.Offset {\n Bool.startBool(builder);\n return Bool.endBool(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Decimal {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Decimal\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Decimal {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Decimal= obj\n * @returns Decimal\n */\n static getRootAsDecimal(bb: flatbuffers.ByteBuffer, obj?: Decimal): Decimal {\n return (obj || new Decimal).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * Total number of decimal digits\n *\n * @returns number\n */\n precision(): number {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n }\n\n /**\n * Number of digits after the decimal point \".\"\n *\n * @returns number\n */\n scale(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDecimal(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number precision\n */\n static addPrecision(builder: flatbuffers.Builder, precision: number) {\n builder.addFieldInt32(0, precision, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number scale\n */\n static addScale(builder: flatbuffers.Builder, scale: number) {\n builder.addFieldInt32(1, scale, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDecimal(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDecimal(builder: flatbuffers.Builder, precision: number, scale: number): flatbuffers.Offset {\n Decimal.startDecimal(builder);\n Decimal.addPrecision(builder, precision);\n Decimal.addScale(builder, scale);\n return Decimal.endDecimal(builder);\n }\n }\n}\n/**\n * Date is either a 32-bit or 64-bit type representing elapsed time since UNIX\n * epoch (1970-01-01), stored in either of two units:\n *\n * * Milliseconds (64 bits) indicating UNIX time elapsed since the epoch (no\n * leap seconds), where the values are evenly divisible by 86400000\n * * Days (32 bits) since the UNIX epoch\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Date {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Date\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Date {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Date= obj\n * @returns Date\n */\n static getRootAsDate(bb: flatbuffers.ByteBuffer, obj?: Date): Date {\n return (obj || new Date).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.DateUnit\n */\n unit(): org.apache.arrow.flatbuf.DateUnit {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.DateUnit.MILLISECOND;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDate(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.DateUnit unit\n */\n static addUnit(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.DateUnit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.DateUnit.MILLISECOND);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDate(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDate(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.DateUnit): flatbuffers.Offset {\n Date.startDate(builder);\n Date.addUnit(builder, unit);\n return Date.endDate(builder);\n }\n }\n}\n/**\n * Time type. The physical storage type depends on the unit\n * - SECOND and MILLISECOND: 32 bits\n * - MICROSECOND and NANOSECOND: 64 bits\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Time {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Time\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Time {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Time= obj\n * @returns Time\n */\n static getRootAsTime(bb: flatbuffers.ByteBuffer, obj?: Time): Time {\n return (obj || new Time).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.TimeUnit\n */\n unit(): org.apache.arrow.flatbuf.TimeUnit {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.TimeUnit.MILLISECOND;\n }\n\n /**\n * @returns number\n */\n bitWidth(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 32;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startTime(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.TimeUnit unit\n */\n static addUnit(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.TimeUnit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.TimeUnit.MILLISECOND);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number bitWidth\n */\n static addBitWidth(builder: flatbuffers.Builder, bitWidth: number) {\n builder.addFieldInt32(1, bitWidth, 32);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTime(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createTime(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.TimeUnit, bitWidth: number): flatbuffers.Offset {\n Time.startTime(builder);\n Time.addUnit(builder, unit);\n Time.addBitWidth(builder, bitWidth);\n return Time.endTime(builder);\n }\n }\n}\n/**\n * Time elapsed from the Unix epoch, 00:00:00.000 on 1 January 1970, excluding\n * leap seconds, as a 64-bit integer. Note that UNIX time does not include\n * leap seconds.\n *\n * The Timestamp metadata supports both \"time zone naive\" and \"time zone\n * aware\" timestamps. Read about the timezone attribute for more detail\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Timestamp {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Timestamp\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Timestamp {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Timestamp= obj\n * @returns Timestamp\n */\n static getRootAsTimestamp(bb: flatbuffers.ByteBuffer, obj?: Timestamp): Timestamp {\n return (obj || new Timestamp).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.TimeUnit\n */\n unit(): org.apache.arrow.flatbuf.TimeUnit {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.TimeUnit.SECOND;\n }\n\n /**\n * The time zone is a string indicating the name of a time zone, one of:\n *\n * * As used in the Olson time zone database (the \"tz database\" or\n * \"tzdata\"), such as \"America/New_York\"\n * * An absolute time zone offset of the form +XX:XX or -XX:XX, such as +07:30\n *\n * Whether a timezone string is present indicates different semantics about\n * the data:\n *\n * * If the time zone is null or equal to an empty string, the data is \"time\n * zone naive\" and shall be displayed *as is* to the user, not localized\n * to the locale of the user. This data can be though of as UTC but\n * without having \"UTC\" as the time zone, it is not considered to be\n * localized to any time zone\n *\n * * If the time zone is set to a valid value, values can be displayed as\n * \"localized\" to that time zone, even though the underlying 64-bit\n * integers are identical to the same data stored in UTC. Converting\n * between time zones is a metadata-only operation and does not change the\n * underlying values\n *\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n timezone(): string | null;\n timezone(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;\n timezone(optionalEncoding?: any): string | Uint8Array | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startTimestamp(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.TimeUnit unit\n */\n static addUnit(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.TimeUnit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.TimeUnit.SECOND);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset timezoneOffset\n */\n static addTimezone(builder: flatbuffers.Builder, timezoneOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, timezoneOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTimestamp(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createTimestamp(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.TimeUnit, timezoneOffset: flatbuffers.Offset): flatbuffers.Offset {\n Timestamp.startTimestamp(builder);\n Timestamp.addUnit(builder, unit);\n Timestamp.addTimezone(builder, timezoneOffset);\n return Timestamp.endTimestamp(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Interval {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Interval\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Interval {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Interval= obj\n * @returns Interval\n */\n static getRootAsInterval(bb: flatbuffers.ByteBuffer, obj?: Interval): Interval {\n return (obj || new Interval).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.IntervalUnit\n */\n unit(): org.apache.arrow.flatbuf.IntervalUnit {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.IntervalUnit.YEAR_MONTH;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startInterval(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.IntervalUnit unit\n */\n static addUnit(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.IntervalUnit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.IntervalUnit.YEAR_MONTH);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endInterval(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createInterval(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.IntervalUnit): flatbuffers.Offset {\n Interval.startInterval(builder);\n Interval.addUnit(builder, unit);\n return Interval.endInterval(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Duration {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Duration\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Duration {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Duration= obj\n * @returns Duration\n */\n static getRootAsDuration(bb: flatbuffers.ByteBuffer, obj?: Duration): Duration {\n return (obj || new Duration).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.TimeUnit\n */\n unit(): org.apache.arrow.flatbuf.TimeUnit {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.TimeUnit.MILLISECOND;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDuration(builder: flatbuffers.Builder) {\n builder.startObject(1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.TimeUnit unit\n */\n static addUnit(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.TimeUnit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.TimeUnit.MILLISECOND);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDuration(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDuration(builder: flatbuffers.Builder, unit: org.apache.arrow.flatbuf.TimeUnit): flatbuffers.Offset {\n Duration.startDuration(builder);\n Duration.addUnit(builder, unit);\n return Duration.endDuration(builder);\n }\n }\n}\n/**\n * ----------------------------------------------------------------------\n * user defined key value pairs to add custom metadata to arrow\n * key namespacing is the responsibility of the user\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class KeyValue {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns KeyValue\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): KeyValue {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param KeyValue= obj\n * @returns KeyValue\n */\n static getRootAsKeyValue(bb: flatbuffers.ByteBuffer, obj?: KeyValue): KeyValue {\n return (obj || new KeyValue).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n key(): string | null;\n key(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;\n key(optionalEncoding?: any): string | Uint8Array | null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n value(): string | null;\n value(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;\n value(optionalEncoding?: any): string | Uint8Array | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startKeyValue(builder: flatbuffers.Builder) {\n builder.startObject(2);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset keyOffset\n */\n static addKey(builder: flatbuffers.Builder, keyOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, keyOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset valueOffset\n */\n static addValue(builder: flatbuffers.Builder, valueOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, valueOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endKeyValue(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createKeyValue(builder: flatbuffers.Builder, keyOffset: flatbuffers.Offset, valueOffset: flatbuffers.Offset): flatbuffers.Offset {\n KeyValue.startKeyValue(builder);\n KeyValue.addKey(builder, keyOffset);\n KeyValue.addValue(builder, valueOffset);\n return KeyValue.endKeyValue(builder);\n }\n }\n}\n/**\n * ----------------------------------------------------------------------\n * Dictionary encoding metadata\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class DictionaryEncoding {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns DictionaryEncoding\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): DictionaryEncoding {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param DictionaryEncoding= obj\n * @returns DictionaryEncoding\n */\n static getRootAsDictionaryEncoding(bb: flatbuffers.ByteBuffer, obj?: DictionaryEncoding): DictionaryEncoding {\n return (obj || new DictionaryEncoding).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * The known dictionary id in the application where this data is used. In\n * the file or streaming formats, the dictionary ids are found in the\n * DictionaryBatch messages\n *\n * @returns flatbuffers.Long\n */\n id(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * The dictionary indices are constrained to be positive integers. If this\n * field is null, the indices must be signed int32\n *\n * @param org.apache.arrow.flatbuf.Int= obj\n * @returns org.apache.arrow.flatbuf.Int|null\n */\n indexType(obj?: org.apache.arrow.flatbuf.Int): org.apache.arrow.flatbuf.Int | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.Int).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n }\n\n /**\n * By default, dictionaries are not ordered, or the order does not have\n * semantic meaning. In some statistical, applications, dictionary-encoding\n * is used to represent ordered categorical data, and we provide a way to\n * preserve that metadata here\n *\n * @returns boolean\n */\n isOrdered(): boolean {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDictionaryEncoding(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long id\n */\n static addId(builder: flatbuffers.Builder, id: flatbuffers.Long) {\n builder.addFieldInt64(0, id, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset indexTypeOffset\n */\n static addIndexType(builder: flatbuffers.Builder, indexTypeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, indexTypeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param boolean isOrdered\n */\n static addIsOrdered(builder: flatbuffers.Builder, isOrdered: boolean) {\n builder.addFieldInt8(2, +isOrdered, +false);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDictionaryEncoding(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDictionaryEncoding(builder: flatbuffers.Builder, id: flatbuffers.Long, indexTypeOffset: flatbuffers.Offset, isOrdered: boolean): flatbuffers.Offset {\n DictionaryEncoding.startDictionaryEncoding(builder);\n DictionaryEncoding.addId(builder, id);\n DictionaryEncoding.addIndexType(builder, indexTypeOffset);\n DictionaryEncoding.addIsOrdered(builder, isOrdered);\n return DictionaryEncoding.endDictionaryEncoding(builder);\n }\n }\n}\n/**\n * ----------------------------------------------------------------------\n * A field represents a named column in a record / row batch or child of a\n * nested type.\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Field {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Field\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Field {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Field= obj\n * @returns Field\n */\n static getRootAsField(bb: flatbuffers.ByteBuffer, obj?: Field): Field {\n return (obj || new Field).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * Name is not required, in i.e. a List\n *\n * @param flatbuffers.Encoding= optionalEncoding\n * @returns string|Uint8Array|null\n */\n name(): string | null;\n name(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;\n name(optionalEncoding?: any): string | Uint8Array | null {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n\n /**\n * Whether or not this field can contain nulls. Should be true in general.\n *\n * @returns boolean\n */\n nullable(): boolean {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.Type\n */\n typeType(): org.apache.arrow.flatbuf.Type {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? /** */ (this.bb!.readUint8(this.bb_pos + offset)) : org.apache.arrow.flatbuf.Type.NONE;\n }\n\n /**\n * This is the type of the decoded value if the field is dictionary encoded.\n *\n * @param flatbuffers.Table obj\n * @returns ?flatbuffers.Table\n */\n type(obj: T): T | null {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n }\n\n /**\n * Present only if the field is dictionary encoded.\n *\n * @param org.apache.arrow.flatbuf.DictionaryEncoding= obj\n * @returns org.apache.arrow.flatbuf.DictionaryEncoding|null\n */\n dictionary(obj?: org.apache.arrow.flatbuf.DictionaryEncoding): org.apache.arrow.flatbuf.DictionaryEncoding | null {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? (obj || new org.apache.arrow.flatbuf.DictionaryEncoding).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n }\n\n /**\n * children apply only to nested data types like Struct, List and Union. For\n * primitive types children will have length 0.\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.Field= obj\n * @returns org.apache.arrow.flatbuf.Field\n */\n children(index: number, obj?: org.apache.arrow.flatbuf.Field): org.apache.arrow.flatbuf.Field | null {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? (obj || new org.apache.arrow.flatbuf.Field).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n childrenLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * User-defined metadata\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.KeyValue= obj\n * @returns org.apache.arrow.flatbuf.KeyValue\n */\n customMetadata(index: number, obj?: org.apache.arrow.flatbuf.KeyValue): org.apache.arrow.flatbuf.KeyValue | null {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? (obj || new org.apache.arrow.flatbuf.KeyValue).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n customMetadataLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startField(builder: flatbuffers.Builder) {\n builder.startObject(7);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nameOffset\n */\n static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param boolean nullable\n */\n static addNullable(builder: flatbuffers.Builder, nullable: boolean) {\n builder.addFieldInt8(1, +nullable, +false);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.Type typeType\n */\n static addTypeType(builder: flatbuffers.Builder, typeType: org.apache.arrow.flatbuf.Type) {\n builder.addFieldInt8(2, typeType, org.apache.arrow.flatbuf.Type.NONE);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset typeOffset\n */\n static addType(builder: flatbuffers.Builder, typeOffset: flatbuffers.Offset) {\n builder.addFieldOffset(3, typeOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dictionaryOffset\n */\n static addDictionary(builder: flatbuffers.Builder, dictionaryOffset: flatbuffers.Offset) {\n builder.addFieldOffset(4, dictionaryOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset childrenOffset\n */\n static addChildren(builder: flatbuffers.Builder, childrenOffset: flatbuffers.Offset) {\n builder.addFieldOffset(5, childrenOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createChildrenVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startChildrenVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset customMetadataOffset\n */\n static addCustomMetadata(builder: flatbuffers.Builder, customMetadataOffset: flatbuffers.Offset) {\n builder.addFieldOffset(6, customMetadataOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createCustomMetadataVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startCustomMetadataVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endField(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createField(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset, nullable: boolean, typeType: org.apache.arrow.flatbuf.Type, typeOffset: flatbuffers.Offset, dictionaryOffset: flatbuffers.Offset, childrenOffset: flatbuffers.Offset, customMetadataOffset: flatbuffers.Offset): flatbuffers.Offset {\n Field.startField(builder);\n Field.addName(builder, nameOffset);\n Field.addNullable(builder, nullable);\n Field.addTypeType(builder, typeType);\n Field.addType(builder, typeOffset);\n Field.addDictionary(builder, dictionaryOffset);\n Field.addChildren(builder, childrenOffset);\n Field.addCustomMetadata(builder, customMetadataOffset);\n return Field.endField(builder);\n }\n }\n}\n/**\n * ----------------------------------------------------------------------\n * A Buffer represents a single contiguous memory segment\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Buffer {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Buffer\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Buffer {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * The relative offset into the shared memory page where the bytes for this\n * buffer starts\n *\n * @returns flatbuffers.Long\n */\n offset(): flatbuffers.Long {\n return this.bb!.readInt64(this.bb_pos);\n }\n\n /**\n * The absolute length (in bytes) of the memory buffer. The memory is found\n * from offset (inclusive) to offset + length (non-inclusive).\n *\n * @returns flatbuffers.Long\n */\n length(): flatbuffers.Long {\n return this.bb!.readInt64(this.bb_pos + 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long offset\n * @param flatbuffers.Long length\n * @returns flatbuffers.Offset\n */\n static createBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Long, length: flatbuffers.Long): flatbuffers.Offset {\n builder.prep(8, 16);\n builder.writeInt64(length);\n builder.writeInt64(offset);\n return builder.offset();\n }\n\n }\n}\n/**\n * ----------------------------------------------------------------------\n * A Schema describes the columns in a row batch\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Schema {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Schema\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Schema {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Schema= obj\n * @returns Schema\n */\n static getRootAsSchema(bb: flatbuffers.ByteBuffer, obj?: Schema): Schema {\n return (obj || new Schema).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * endianness of the buffer\n * it is Little Endian by default\n * if endianness doesn't match the underlying system then the vectors need to be converted\n *\n * @returns org.apache.arrow.flatbuf.Endianness\n */\n endianness(): org.apache.arrow.flatbuf.Endianness {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.Endianness.Little;\n }\n\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.Field= obj\n * @returns org.apache.arrow.flatbuf.Field\n */\n fields(index: number, obj?: org.apache.arrow.flatbuf.Field): org.apache.arrow.flatbuf.Field | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.Field).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n fieldsLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.KeyValue= obj\n * @returns org.apache.arrow.flatbuf.KeyValue\n */\n customMetadata(index: number, obj?: org.apache.arrow.flatbuf.KeyValue): org.apache.arrow.flatbuf.KeyValue | null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new org.apache.arrow.flatbuf.KeyValue).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n customMetadataLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startSchema(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.Endianness endianness\n */\n static addEndianness(builder: flatbuffers.Builder, endianness: org.apache.arrow.flatbuf.Endianness) {\n builder.addFieldInt16(0, endianness, org.apache.arrow.flatbuf.Endianness.Little);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset fieldsOffset\n */\n static addFields(builder: flatbuffers.Builder, fieldsOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, fieldsOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createFieldsVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startFieldsVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset customMetadataOffset\n */\n static addCustomMetadata(builder: flatbuffers.Builder, customMetadataOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, customMetadataOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createCustomMetadataVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startCustomMetadataVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endSchema(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishSchemaBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) {\n builder.finish(offset);\n }\n\n static createSchema(builder: flatbuffers.Builder, endianness: org.apache.arrow.flatbuf.Endianness, fieldsOffset: flatbuffers.Offset, customMetadataOffset: flatbuffers.Offset): flatbuffers.Offset {\n Schema.startSchema(builder);\n Schema.addEndianness(builder, endianness);\n Schema.addFields(builder, fieldsOffset);\n Schema.addCustomMetadata(builder, customMetadataOffset);\n return Schema.endSchema(builder);\n }\n }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\nimport { flatbuffers } from 'flatbuffers';\nimport * as NS7624605610262437867 from './Schema';\nexport namespace org.apache.arrow.flatbuf {\n export import Schema = NS7624605610262437867.org.apache.arrow.flatbuf.Schema;\n}\n/**\n * ----------------------------------------------------------------------\n * The root Message type\n * This union enables us to easily send different message types without\n * redundant storage, and in the future we can easily add new message types.\n *\n * Arrow implementations do not need to implement all of the message types,\n * which may include experimental metadata types. For maximum compatibility,\n * it is best to send data using RecordBatch\n *\n * @enum {number}\n */\nexport namespace org.apache.arrow.flatbuf {\n export enum MessageHeader {\n NONE = 0,\n Schema = 1,\n DictionaryBatch = 2,\n RecordBatch = 3,\n Tensor = 4,\n SparseTensor = 5\n }\n}\n\n/**\n * ----------------------------------------------------------------------\n * Data structures for describing a table row batch (a collection of\n * equal-length Arrow arrays)\n * Metadata about a field at some level of a nested type tree (but not\n * its children).\n *\n * For example, a List with values [[1, 2, 3], null, [4], [5, 6], null]\n * would have {length: 5, null_count: 2} for its List node, and {length: 6,\n * null_count: 0} for its Int16 node, as separate FieldNode structs\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class FieldNode {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FieldNode\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): FieldNode {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * The number of value slots in the Arrow array at this level of a nested\n * tree\n *\n * @returns flatbuffers.Long\n */\n length(): flatbuffers.Long {\n return this.bb!.readInt64(this.bb_pos);\n }\n\n /**\n * The number of observed nulls. Fields with null_count == 0 may choose not\n * to write their physical validity bitmap out as a materialized buffer,\n * instead setting the length of the bitmap buffer to 0.\n *\n * @returns flatbuffers.Long\n */\n nullCount(): flatbuffers.Long {\n return this.bb!.readInt64(this.bb_pos + 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long length\n * @param flatbuffers.Long null_count\n * @returns flatbuffers.Offset\n */\n static createFieldNode(builder: flatbuffers.Builder, length: flatbuffers.Long, null_count: flatbuffers.Long): flatbuffers.Offset {\n builder.prep(8, 16);\n builder.writeInt64(null_count);\n builder.writeInt64(length);\n return builder.offset();\n }\n\n }\n}\n/**\n * A data header describing the shared memory layout of a \"record\" or \"row\"\n * batch. Some systems call this a \"row batch\" internally and others a \"record\n * batch\".\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class RecordBatch {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns RecordBatch\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): RecordBatch {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param RecordBatch= obj\n * @returns RecordBatch\n */\n static getRootAsRecordBatch(bb: flatbuffers.ByteBuffer, obj?: RecordBatch): RecordBatch {\n return (obj || new RecordBatch).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * number of records / rows. The arrays in the batch should all have this\n * length\n *\n * @returns flatbuffers.Long\n */\n length(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * Nodes correspond to the pre-ordered flattened logical schema\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.FieldNode= obj\n * @returns org.apache.arrow.flatbuf.FieldNode\n */\n nodes(index: number, obj?: org.apache.arrow.flatbuf.FieldNode): org.apache.arrow.flatbuf.FieldNode | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.FieldNode).__init(this.bb!.__vector(this.bb_pos + offset) + index * 16, this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n nodesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * Buffers correspond to the pre-ordered flattened buffer tree\n *\n * The number of buffers appended to this list depends on the schema. For\n * example, most primitive arrays will have 2 buffers, 1 for the validity\n * bitmap and 1 for the values. For struct arrays, there will only be a\n * single buffer for the validity (nulls) bitmap\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.Buffer= obj\n * @returns org.apache.arrow.flatbuf.Buffer\n */\n buffers(index: number, obj?: NS7624605610262437867.org.apache.arrow.flatbuf.Buffer): NS7624605610262437867.org.apache.arrow.flatbuf.Buffer | null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new NS7624605610262437867.org.apache.arrow.flatbuf.Buffer).__init(this.bb!.__vector(this.bb_pos + offset) + index * 16, this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n buffersLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startRecordBatch(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long length\n */\n static addLength(builder: flatbuffers.Builder, length: flatbuffers.Long) {\n builder.addFieldInt64(0, length, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nodesOffset\n */\n static addNodes(builder: flatbuffers.Builder, nodesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, nodesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startNodesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(16, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset buffersOffset\n */\n static addBuffers(builder: flatbuffers.Builder, buffersOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, buffersOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startBuffersVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(16, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endRecordBatch(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createRecordBatch(builder: flatbuffers.Builder, length: flatbuffers.Long, nodesOffset: flatbuffers.Offset, buffersOffset: flatbuffers.Offset): flatbuffers.Offset {\n RecordBatch.startRecordBatch(builder);\n RecordBatch.addLength(builder, length);\n RecordBatch.addNodes(builder, nodesOffset);\n RecordBatch.addBuffers(builder, buffersOffset);\n return RecordBatch.endRecordBatch(builder);\n }\n }\n}\n/**\n * For sending dictionary encoding information. Any Field can be\n * dictionary-encoded, but in this case none of its children may be\n * dictionary-encoded.\n * There is one vector / column per dictionary, but that vector / column\n * may be spread across multiple dictionary batches by using the isDelta\n * flag\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class DictionaryBatch {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns DictionaryBatch\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): DictionaryBatch {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param DictionaryBatch= obj\n * @returns DictionaryBatch\n */\n static getRootAsDictionaryBatch(bb: flatbuffers.ByteBuffer, obj?: DictionaryBatch): DictionaryBatch {\n return (obj || new DictionaryBatch).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns flatbuffers.Long\n */\n id(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param org.apache.arrow.flatbuf.RecordBatch= obj\n * @returns org.apache.arrow.flatbuf.RecordBatch|null\n */\n data(obj?: org.apache.arrow.flatbuf.RecordBatch): org.apache.arrow.flatbuf.RecordBatch | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.RecordBatch).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n }\n\n /**\n * If isDelta is true the values in the dictionary are to be appended to a\n * dictionary with the indicated id\n *\n * @returns boolean\n */\n isDelta(): boolean {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startDictionaryBatch(builder: flatbuffers.Builder) {\n builder.startObject(3);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long id\n */\n static addId(builder: flatbuffers.Builder, id: flatbuffers.Long) {\n builder.addFieldInt64(0, id, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dataOffset\n */\n static addData(builder: flatbuffers.Builder, dataOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, dataOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param boolean isDelta\n */\n static addIsDelta(builder: flatbuffers.Builder, isDelta: boolean) {\n builder.addFieldInt8(2, +isDelta, +false);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDictionaryBatch(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n static createDictionaryBatch(builder: flatbuffers.Builder, id: flatbuffers.Long, dataOffset: flatbuffers.Offset, isDelta: boolean): flatbuffers.Offset {\n DictionaryBatch.startDictionaryBatch(builder);\n DictionaryBatch.addId(builder, id);\n DictionaryBatch.addData(builder, dataOffset);\n DictionaryBatch.addIsDelta(builder, isDelta);\n return DictionaryBatch.endDictionaryBatch(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Message {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Message\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Message {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Message= obj\n * @returns Message\n */\n static getRootAsMessage(bb: flatbuffers.ByteBuffer, obj?: Message): Message {\n return (obj || new Message).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.MetadataVersion\n */\n version(): NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1;\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.MessageHeader\n */\n headerType(): org.apache.arrow.flatbuf.MessageHeader {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? /** */ (this.bb!.readUint8(this.bb_pos + offset)) : org.apache.arrow.flatbuf.MessageHeader.NONE;\n }\n\n /**\n * @param flatbuffers.Table obj\n * @returns ?flatbuffers.Table\n */\n header(obj: T): T | null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n }\n\n /**\n * @returns flatbuffers.Long\n */\n bodyLength(): flatbuffers.Long {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readInt64(this.bb_pos + offset) : this.bb!.createLong(0, 0);\n }\n\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.KeyValue= obj\n * @returns org.apache.arrow.flatbuf.KeyValue\n */\n customMetadata(index: number, obj?: NS7624605610262437867.org.apache.arrow.flatbuf.KeyValue): NS7624605610262437867.org.apache.arrow.flatbuf.KeyValue | null {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? (obj || new NS7624605610262437867.org.apache.arrow.flatbuf.KeyValue).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n customMetadataLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startMessage(builder: flatbuffers.Builder) {\n builder.startObject(5);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.MetadataVersion version\n */\n static addVersion(builder: flatbuffers.Builder, version: NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion) {\n builder.addFieldInt16(0, version, NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.MessageHeader headerType\n */\n static addHeaderType(builder: flatbuffers.Builder, headerType: org.apache.arrow.flatbuf.MessageHeader) {\n builder.addFieldInt8(1, headerType, org.apache.arrow.flatbuf.MessageHeader.NONE);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset headerOffset\n */\n static addHeader(builder: flatbuffers.Builder, headerOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, headerOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long bodyLength\n */\n static addBodyLength(builder: flatbuffers.Builder, bodyLength: flatbuffers.Long) {\n builder.addFieldInt64(3, bodyLength, builder.createLong(0, 0));\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset customMetadataOffset\n */\n static addCustomMetadata(builder: flatbuffers.Builder, customMetadataOffset: flatbuffers.Offset) {\n builder.addFieldOffset(4, customMetadataOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createCustomMetadataVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startCustomMetadataVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(4, numElems, 4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endMessage(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishMessageBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) {\n builder.finish(offset);\n }\n\n static createMessage(builder: flatbuffers.Builder, version: NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion, headerType: org.apache.arrow.flatbuf.MessageHeader, headerOffset: flatbuffers.Offset, bodyLength: flatbuffers.Long, customMetadataOffset: flatbuffers.Offset): flatbuffers.Offset {\n Message.startMessage(builder);\n Message.addVersion(builder, version);\n Message.addHeaderType(builder, headerType);\n Message.addHeader(builder, headerOffset);\n Message.addBodyLength(builder, bodyLength);\n Message.addCustomMetadata(builder, customMetadataOffset);\n return Message.endMessage(builder);\n }\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport * as Schema_ from './fb/Schema';\nimport * as Message_ from './fb/Message';\n\nexport import ArrowType = Schema_.org.apache.arrow.flatbuf.Type;\nexport import DateUnit = Schema_.org.apache.arrow.flatbuf.DateUnit;\nexport import TimeUnit = Schema_.org.apache.arrow.flatbuf.TimeUnit;\nexport import Precision = Schema_.org.apache.arrow.flatbuf.Precision;\nexport import UnionMode = Schema_.org.apache.arrow.flatbuf.UnionMode;\nexport import IntervalUnit = Schema_.org.apache.arrow.flatbuf.IntervalUnit;\nexport import MessageHeader = Message_.org.apache.arrow.flatbuf.MessageHeader;\nexport import MetadataVersion = Schema_.org.apache.arrow.flatbuf.MetadataVersion;\n\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only enum values 0-17 (NONE through Map) are written to an Arrow\n * IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport enum Type {\n /** The default placeholder type */\n NONE = 0,\n /** A NULL type having no physical storage */\n Null = 1,\n /** Signed or unsigned 8, 16, 32, or 64-bit little-endian integer */\n Int = 2,\n /** 2, 4, or 8-byte floating point value */\n Float = 3,\n /** Variable-length bytes (no guarantee of UTF8-ness) */\n Binary = 4,\n /** UTF8 variable-length string as List */\n Utf8 = 5,\n /** Boolean as 1 bit, LSB bit-packed ordering */\n Bool = 6,\n /** Precision-and-scale-based decimal type. Storage type depends on the parameters. */\n Decimal = 7,\n /** int32_t days or int64_t milliseconds since the UNIX epoch */\n Date = 8,\n /** Time as signed 32 or 64-bit integer, representing either seconds, milliseconds, microseconds, or nanoseconds since midnight since midnight */\n Time = 9,\n /** Exact timestamp encoded with int64 since UNIX epoch (Default unit millisecond) */\n Timestamp = 10,\n /** YEAR_MONTH or DAY_TIME interval in SQL style */\n Interval = 11,\n /** A list of some logical data type */\n List = 12,\n /** Struct of logical types */\n Struct = 13,\n /** Union of logical types */\n Union = 14,\n /** Fixed-size binary. Each value occupies the same number of bytes */\n FixedSizeBinary = 15,\n /** Fixed-size list. Each value occupies the same number of bytes */\n FixedSizeList = 16,\n /** Map of named logical types */\n Map = 17,\n\n /** Dictionary aka Category type */\n Dictionary = -1,\n Int8 = -2,\n Int16 = -3,\n Int32 = -4,\n Int64 = -5,\n Uint8 = -6,\n Uint16 = -7,\n Uint32 = -8,\n Uint64 = -9,\n Float16 = -10,\n Float32 = -11,\n Float64 = -12,\n DateDay = -13,\n DateMillisecond = -14,\n TimestampSecond = -15,\n TimestampMillisecond = -16,\n TimestampMicrosecond = -17,\n TimestampNanosecond = -18,\n TimeSecond = -19,\n TimeMillisecond = -20,\n TimeMicrosecond = -21,\n TimeNanosecond = -22,\n DenseUnion = -23,\n SparseUnion = -24,\n IntervalDayTime = -25,\n IntervalYearMonth = -26,\n}\n\nexport enum BufferType {\n /**\n * used in List type, Dense Union and variable length primitive types (String, Binary)\n */\n OFFSET = 0,\n\n /**\n * actual data, either wixed width primitive types in slots or variable width delimited by an OFFSET vector\n */\n DATA = 1,\n\n /**\n * Bit vector indicating if each value is null\n */\n VALIDITY = 2,\n\n /**\n * Type vector used in Union type\n */\n TYPE = 3\n }\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/** @ignore */\nexport function getBool(_data: any, _index: number, byte: number, bit: number) {\n return (byte & 1 << bit) !== 0;\n}\n\n/** @ignore */\nexport function getBit(_data: any, _index: number, byte: number, bit: number): 0 | 1 {\n return (byte & 1 << bit) >> bit as (0 | 1);\n}\n\n/** @ignore */\nexport function setBool(bytes: Uint8Array, index: number, value: any) {\n return value ?\n !!(bytes[index >> 3] |= (1 << (index % 8))) || true :\n !(bytes[index >> 3] &= ~(1 << (index % 8))) && false ;\n}\n\n/** @ignore */\nexport function truncateBitmap(offset: number, length: number, bitmap: Uint8Array) {\n const alignedSize = (bitmap.byteLength + 7) & ~7;\n if (offset > 0 || bitmap.byteLength < alignedSize) {\n const bytes = new Uint8Array(alignedSize);\n // If the offset is a multiple of 8 bits, it's safe to slice the bitmap\n bytes.set(offset % 8 === 0 ? bitmap.subarray(offset >> 3) :\n // Otherwise iterate each bit from the offset and return a new one\n packBools(iterateBits(bitmap, offset, length, null, getBool)).subarray(0, alignedSize));\n return bytes;\n }\n return bitmap;\n}\n\n/** @ignore */\nexport function packBools(values: Iterable) {\n let xs: number[] = [];\n let i = 0, bit = 0, byte = 0;\n for (const value of values) {\n value && (byte |= 1 << bit);\n if (++bit === 8) {\n xs[i++] = byte;\n byte = bit = 0;\n }\n }\n if (i === 0 || bit > 0) { xs[i++] = byte; }\n let b = new Uint8Array((xs.length + 7) & ~7);\n b.set(xs);\n return b;\n}\n\n/** @ignore */\nexport function* iterateBits(bytes: Uint8Array, begin: number, length: number, context: any,\n get: (context: any, index: number, byte: number, bit: number) => T) {\n let bit = begin % 8;\n let byteIndex = begin >> 3;\n let index = 0, remaining = length;\n for (; remaining > 0; bit = 0) {\n let byte = bytes[byteIndex++];\n do {\n yield get(context, index++, byte, bit);\n } while (--remaining > 0 && ++bit < 8);\n }\n}\n\n/**\n * Compute the population count (the number of bits set to 1) for a range of bits in a Uint8Array.\n * @param vector The Uint8Array of bits for which to compute the population count.\n * @param lhs The range's left-hand side (or start) bit\n * @param rhs The range's right-hand side (or end) bit\n */\n/** @ignore */\nexport function popcnt_bit_range(data: Uint8Array, lhs: number, rhs: number): number {\n if (rhs - lhs <= 0) { return 0; }\n // If the bit range is less than one byte, sum the 1 bits in the bit range\n if (rhs - lhs < 8) {\n let sum = 0;\n for (const bit of iterateBits(data, lhs, rhs - lhs, data, getBit)) {\n sum += bit;\n }\n return sum;\n }\n // Get the next lowest multiple of 8 from the right hand side\n const rhsInside = rhs >> 3 << 3;\n // Get the next highest multiple of 8 from the left hand side\n const lhsInside = lhs + (lhs % 8 === 0 ? 0 : 8 - lhs % 8);\n return (\n // Get the popcnt of bits between the left hand side, and the next highest multiple of 8\n popcnt_bit_range(data, lhs, lhsInside) +\n // Get the popcnt of bits between the right hand side, and the next lowest multiple of 8\n popcnt_bit_range(data, rhsInside, rhs) +\n // Get the popcnt of all bits between the left and right hand sides' multiples of 8\n popcnt_array(data, lhsInside >> 3, (rhsInside - lhsInside) >> 3)\n );\n}\n\n/** @ignore */\nexport function popcnt_array(arr: ArrayBufferView, byteOffset?: number, byteLength?: number) {\n let cnt = 0, pos = byteOffset! | 0;\n const view = new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n const len = byteLength === void 0 ? arr.byteLength : pos + byteLength;\n while (len - pos >= 4) {\n cnt += popcnt_uint32(view.getUint32(pos));\n pos += 4;\n }\n while (len - pos >= 2) {\n cnt += popcnt_uint32(view.getUint16(pos));\n pos += 2;\n }\n while (len - pos >= 1) {\n cnt += popcnt_uint32(view.getUint8(pos));\n pos += 1;\n }\n return cnt;\n}\n\n/** @ignore */\nexport function popcnt_uint32(uint32: number): number {\n let i = uint32 | 0;\n i = i - ((i >>> 1) & 0x55555555);\n i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);\n return (((i + (i >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { Vector } from './vector';\nimport { Type, Precision, DateUnit, TimeUnit, IntervalUnit, UnionMode } from './enum';\nimport { DataType, Float, Int, Date_, Interval, Time, Timestamp, Union, } from './type';\n\nexport abstract class Visitor {\n public visitMany(nodes: any[], ...args: any[][]) {\n return nodes.map((node, i) => this.visit(node, ...args.map((x) => x[i])));\n }\n public visit(...args: any[]) {\n return this.getVisitFn(args[0], false).apply(this, args);\n }\n public getVisitFn(node: any, throwIfNotFound = true) {\n return getVisitFn(this, node, throwIfNotFound);\n }\n public visitNull (_node: any, ..._args: any[]): any { return null; }\n public visitBool (_node: any, ..._args: any[]): any { return null; }\n public visitInt (_node: any, ..._args: any[]): any { return null; }\n public visitFloat (_node: any, ..._args: any[]): any { return null; }\n public visitUtf8 (_node: any, ..._args: any[]): any { return null; }\n public visitBinary (_node: any, ..._args: any[]): any { return null; }\n public visitFixedSizeBinary (_node: any, ..._args: any[]): any { return null; }\n public visitDate (_node: any, ..._args: any[]): any { return null; }\n public visitTimestamp (_node: any, ..._args: any[]): any { return null; }\n public visitTime (_node: any, ..._args: any[]): any { return null; }\n public visitDecimal (_node: any, ..._args: any[]): any { return null; }\n public visitList (_node: any, ..._args: any[]): any { return null; }\n public visitStruct (_node: any, ..._args: any[]): any { return null; }\n public visitUnion (_node: any, ..._args: any[]): any { return null; }\n public visitDictionary (_node: any, ..._args: any[]): any { return null; }\n public visitInterval (_node: any, ..._args: any[]): any { return null; }\n public visitFixedSizeList (_node: any, ..._args: any[]): any { return null; }\n public visitMap (_node: any, ..._args: any[]): any { return null; }\n}\n\n/** @ignore */\nfunction getVisitFn(visitor: Visitor, node: any, throwIfNotFound = true) {\n let fn: any = null;\n let dtype: T['TType'] = Type.NONE;\n // tslint:disable\n if (node instanceof Data ) { dtype = inferDType(node.type as T); }\n else if (node instanceof Vector ) { dtype = inferDType(node.type as T); }\n else if (node instanceof DataType) { dtype = inferDType(node as T); }\n else if (typeof (dtype = node) !== 'number') { dtype = Type[node] as any as T['TType']; }\n\n switch (dtype) {\n case Type.Null: fn = visitor.visitNull; break;\n case Type.Bool: fn = visitor.visitBool; break;\n case Type.Int: fn = visitor.visitInt; break;\n case Type.Int8: fn = visitor.visitInt8 || visitor.visitInt; break;\n case Type.Int16: fn = visitor.visitInt16 || visitor.visitInt; break;\n case Type.Int32: fn = visitor.visitInt32 || visitor.visitInt; break;\n case Type.Int64: fn = visitor.visitInt64 || visitor.visitInt; break;\n case Type.Uint8: fn = visitor.visitUint8 || visitor.visitInt; break;\n case Type.Uint16: fn = visitor.visitUint16 || visitor.visitInt; break;\n case Type.Uint32: fn = visitor.visitUint32 || visitor.visitInt; break;\n case Type.Uint64: fn = visitor.visitUint64 || visitor.visitInt; break;\n case Type.Float: fn = visitor.visitFloat; break;\n case Type.Float16: fn = visitor.visitFloat16 || visitor.visitFloat; break;\n case Type.Float32: fn = visitor.visitFloat32 || visitor.visitFloat; break;\n case Type.Float64: fn = visitor.visitFloat64 || visitor.visitFloat; break;\n case Type.Utf8: fn = visitor.visitUtf8; break;\n case Type.Binary: fn = visitor.visitBinary; break;\n case Type.FixedSizeBinary: fn = visitor.visitFixedSizeBinary; break;\n case Type.Date: fn = visitor.visitDate; break;\n case Type.DateDay: fn = visitor.visitDateDay || visitor.visitDate; break;\n case Type.DateMillisecond: fn = visitor.visitDateMillisecond || visitor.visitDate; break;\n case Type.Timestamp: fn = visitor.visitTimestamp; break;\n case Type.TimestampSecond: fn = visitor.visitTimestampSecond || visitor.visitTimestamp; break;\n case Type.TimestampMillisecond: fn = visitor.visitTimestampMillisecond || visitor.visitTimestamp; break;\n case Type.TimestampMicrosecond: fn = visitor.visitTimestampMicrosecond || visitor.visitTimestamp; break;\n case Type.TimestampNanosecond: fn = visitor.visitTimestampNanosecond || visitor.visitTimestamp; break;\n case Type.Time: fn = visitor.visitTime; break;\n case Type.TimeSecond: fn = visitor.visitTimeSecond || visitor.visitTime; break;\n case Type.TimeMillisecond: fn = visitor.visitTimeMillisecond || visitor.visitTime; break;\n case Type.TimeMicrosecond: fn = visitor.visitTimeMicrosecond || visitor.visitTime; break;\n case Type.TimeNanosecond: fn = visitor.visitTimeNanosecond || visitor.visitTime; break;\n case Type.Decimal: fn = visitor.visitDecimal; break;\n case Type.List: fn = visitor.visitList; break;\n case Type.Struct: fn = visitor.visitStruct; break;\n case Type.Union: fn = visitor.visitUnion; break;\n case Type.DenseUnion: fn = visitor.visitDenseUnion || visitor.visitUnion; break;\n case Type.SparseUnion: fn = visitor.visitSparseUnion || visitor.visitUnion; break;\n case Type.Dictionary: fn = visitor.visitDictionary; break;\n case Type.Interval: fn = visitor.visitInterval; break;\n case Type.IntervalDayTime: fn = visitor.visitIntervalDayTime || visitor.visitInterval; break;\n case Type.IntervalYearMonth: fn = visitor.visitIntervalYearMonth || visitor.visitInterval; break;\n case Type.FixedSizeList: fn = visitor.visitFixedSizeList; break;\n case Type.Map: fn = visitor.visitMap; break;\n }\n if (typeof fn === 'function') return fn;\n if (!throwIfNotFound) return () => null;\n throw new Error(`Unrecognized type '${Type[dtype]}'`);\n}\n\n/** @ignore */\nfunction inferDType(type: T): Type {\n switch (type.typeId) {\n case Type.Null: return Type.Null;\n case Type.Int:\n const { bitWidth, isSigned } = (type as any as Int);\n switch (bitWidth) {\n case 8: return isSigned ? Type.Int8 : Type.Uint8 ;\n case 16: return isSigned ? Type.Int16 : Type.Uint16;\n case 32: return isSigned ? Type.Int32 : Type.Uint32;\n case 64: return isSigned ? Type.Int64 : Type.Uint64;\n }\n return Type.Int;\n case Type.Float:\n switch((type as any as Float).precision) {\n case Precision.HALF: return Type.Float16;\n case Precision.SINGLE: return Type.Float32;\n case Precision.DOUBLE: return Type.Float64;\n }\n return Type.Float;\n case Type.Binary: return Type.Binary;\n case Type.Utf8: return Type.Utf8;\n case Type.Bool: return Type.Bool;\n case Type.Decimal: return Type.Decimal;\n case Type.Time:\n switch ((type as any as Time).unit) {\n case TimeUnit.SECOND: return Type.TimeSecond;\n case TimeUnit.MILLISECOND: return Type.TimeMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimeMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimeNanosecond;\n }\n return Type.Time;\n case Type.Timestamp:\n switch ((type as any as Timestamp).unit) {\n case TimeUnit.SECOND: return Type.TimestampSecond;\n case TimeUnit.MILLISECOND: return Type.TimestampMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimestampMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimestampNanosecond;\n }\n return Type.Timestamp;\n case Type.Date:\n switch ((type as any as Date_).unit) {\n case DateUnit.DAY: return Type.DateDay;\n case DateUnit.MILLISECOND: return Type.DateMillisecond;\n }\n return Type.Date;\n case Type.Interval:\n switch ((type as any as Interval).unit) {\n case IntervalUnit.DAY_TIME: return Type.IntervalDayTime;\n case IntervalUnit.YEAR_MONTH: return Type.IntervalYearMonth;\n }\n return Type.Interval;\n case Type.Map: return Type.Map;\n case Type.List: return Type.List;\n case Type.Struct: return Type.Struct;\n case Type.Union:\n switch ((type as any as Union).mode) {\n case UnionMode.Dense: return Type.DenseUnion;\n case UnionMode.Sparse: return Type.SparseUnion;\n }\n return Type.Union;\n case Type.FixedSizeBinary: return Type.FixedSizeBinary;\n case Type.FixedSizeList: return Type.FixedSizeList;\n case Type.Dictionary: return Type.Dictionary;\n }\n throw new Error(`Unrecognized type '${Type[type.typeId]}'`);\n}\n\nexport interface Visitor {\n visitNull (node: any, ...args: any[]): any;\n visitBool (node: any, ...args: any[]): any;\n visitInt (node: any, ...args: any[]): any;\n visitInt8? (node: any, ...args: any[]): any;\n visitInt16? (node: any, ...args: any[]): any;\n visitInt32? (node: any, ...args: any[]): any;\n visitInt64? (node: any, ...args: any[]): any;\n visitUint8? (node: any, ...args: any[]): any;\n visitUint16? (node: any, ...args: any[]): any;\n visitUint32? (node: any, ...args: any[]): any;\n visitUint64? (node: any, ...args: any[]): any;\n visitFloat (node: any, ...args: any[]): any;\n visitFloat16? (node: any, ...args: any[]): any;\n visitFloat32? (node: any, ...args: any[]): any;\n visitFloat64? (node: any, ...args: any[]): any;\n visitUtf8 (node: any, ...args: any[]): any;\n visitBinary (node: any, ...args: any[]): any;\n visitFixedSizeBinary (node: any, ...args: any[]): any;\n visitDate (node: any, ...args: any[]): any;\n visitDateDay? (node: any, ...args: any[]): any;\n visitDateMillisecond? (node: any, ...args: any[]): any;\n visitTimestamp (node: any, ...args: any[]): any;\n visitTimestampSecond? (node: any, ...args: any[]): any;\n visitTimestampMillisecond? (node: any, ...args: any[]): any;\n visitTimestampMicrosecond? (node: any, ...args: any[]): any;\n visitTimestampNanosecond? (node: any, ...args: any[]): any;\n visitTime (node: any, ...args: any[]): any;\n visitTimeSecond? (node: any, ...args: any[]): any;\n visitTimeMillisecond? (node: any, ...args: any[]): any;\n visitTimeMicrosecond? (node: any, ...args: any[]): any;\n visitTimeNanosecond? (node: any, ...args: any[]): any;\n visitDecimal (node: any, ...args: any[]): any;\n visitList (node: any, ...args: any[]): any;\n visitStruct (node: any, ...args: any[]): any;\n visitUnion (node: any, ...args: any[]): any;\n visitDenseUnion? (node: any, ...args: any[]): any;\n visitSparseUnion? (node: any, ...args: any[]): any;\n visitDictionary (node: any, ...args: any[]): any;\n visitInterval (node: any, ...args: any[]): any;\n visitIntervalDayTime? (node: any, ...args: any[]): any;\n visitIntervalYearMonth? (node: any, ...args: any[]): any;\n visitFixedSizeList (node: any, ...args: any[]): any;\n visitMap (node: any, ...args: any[]): any;\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Visitor.prototype as any).visitInt8 = null;\n(Visitor.prototype as any).visitInt16 = null;\n(Visitor.prototype as any).visitInt32 = null;\n(Visitor.prototype as any).visitInt64 = null;\n(Visitor.prototype as any).visitUint8 = null;\n(Visitor.prototype as any).visitUint16 = null;\n(Visitor.prototype as any).visitUint32 = null;\n(Visitor.prototype as any).visitUint64 = null;\n(Visitor.prototype as any).visitFloat16 = null;\n(Visitor.prototype as any).visitFloat32 = null;\n(Visitor.prototype as any).visitFloat64 = null;\n(Visitor.prototype as any).visitDateDay = null;\n(Visitor.prototype as any).visitDateMillisecond = null;\n(Visitor.prototype as any).visitTimestampSecond = null;\n(Visitor.prototype as any).visitTimestampMillisecond = null;\n(Visitor.prototype as any).visitTimestampMicrosecond = null;\n(Visitor.prototype as any).visitTimestampNanosecond = null;\n(Visitor.prototype as any).visitTimeSecond = null;\n(Visitor.prototype as any).visitTimeMillisecond = null;\n(Visitor.prototype as any).visitTimeMicrosecond = null;\n(Visitor.prototype as any).visitTimeNanosecond = null;\n(Visitor.prototype as any).visitDenseUnion = null;\n(Visitor.prototype as any).visitSparseUnion = null;\n(Visitor.prototype as any).visitIntervalDayTime = null;\n(Visitor.prototype as any).visitIntervalYearMonth = null;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { Schema, Field } from '../schema';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface TypeComparator extends Visitor {\n visit(type: T, other?: DataType | null): other is T;\n visitMany(nodes: T[], others?: DataType[] | null): boolean[];\n getVisitFn(node: VectorType | Data | T): (other?: DataType | null) => other is T;\n visitNull (type: T, other?: DataType | null): other is T;\n visitBool (type: T, other?: DataType | null): other is T;\n visitInt (type: T, other?: DataType | null): other is T;\n visitInt8 (type: T, other?: DataType | null): other is T;\n visitInt16 (type: T, other?: DataType | null): other is T;\n visitInt32 (type: T, other?: DataType | null): other is T;\n visitInt64 (type: T, other?: DataType | null): other is T;\n visitUint8 (type: T, other?: DataType | null): other is T;\n visitUint16 (type: T, other?: DataType | null): other is T;\n visitUint32 (type: T, other?: DataType | null): other is T;\n visitUint64 (type: T, other?: DataType | null): other is T;\n visitFloat (type: T, other?: DataType | null): other is T;\n visitFloat16 (type: T, other?: DataType | null): other is T;\n visitFloat32 (type: T, other?: DataType | null): other is T;\n visitFloat64 (type: T, other?: DataType | null): other is T;\n visitUtf8 (type: T, other?: DataType | null): other is T;\n visitBinary (type: T, other?: DataType | null): other is T;\n visitFixedSizeBinary (type: T, other?: DataType | null): other is T;\n visitDate (type: T, other?: DataType | null): other is T;\n visitDateDay (type: T, other?: DataType | null): other is T;\n visitDateMillisecond (type: T, other?: DataType | null): other is T;\n visitTimestamp (type: T, other?: DataType | null): other is T;\n visitTimestampSecond (type: T, other?: DataType | null): other is T;\n visitTimestampMillisecond (type: T, other?: DataType | null): other is T;\n visitTimestampMicrosecond (type: T, other?: DataType | null): other is T;\n visitTimestampNanosecond (type: T, other?: DataType | null): other is T;\n visitTime (type: T, other?: DataType | null): other is T;\n visitTimeSecond (type: T, other?: DataType | null): other is T;\n visitTimeMillisecond (type: T, other?: DataType | null): other is T;\n visitTimeMicrosecond (type: T, other?: DataType | null): other is T;\n visitTimeNanosecond (type: T, other?: DataType | null): other is T;\n visitDecimal (type: T, other?: DataType | null): other is T;\n visitList (type: T, other?: DataType | null): other is T;\n visitStruct (type: T, other?: DataType | null): other is T;\n visitUnion (type: T, other?: DataType | null): other is T;\n visitDenseUnion (type: T, other?: DataType | null): other is T;\n visitSparseUnion (type: T, other?: DataType | null): other is T;\n visitDictionary (type: T, other?: DataType | null): other is T;\n visitInterval (type: T, other?: DataType | null): other is T;\n visitIntervalDayTime (type: T, other?: DataType | null): other is T;\n visitIntervalYearMonth (type: T, other?: DataType | null): other is T;\n visitFixedSizeList (type: T, other?: DataType | null): other is T;\n visitMap (type: T, other?: DataType | null): other is T;\n}\n\n/** @ignore */\nexport class TypeComparator extends Visitor {\n compareSchemas(schema: Schema, other?: Schema | null): other is Schema {\n return (schema === other) || (\n other instanceof schema.constructor &&\n instance.compareFields(schema.fields, other.fields)\n );\n }\n compareFields(fields: Field[], others?: Field[] | null): others is Field[] {\n return (fields === others) || (\n Array.isArray(fields) &&\n Array.isArray(others) &&\n fields.length === others.length &&\n fields.every((f, i) => instance.compareField(f, others[i]))\n );\n }\n compareField(field: Field, other?: Field | null): other is Field {\n return (field === other) || (\n other instanceof field.constructor &&\n field.name === other.name &&\n field.nullable === other.nullable &&\n instance.visit(field.type, other.type)\n );\n }\n}\n\nfunction compareConstructor(type: T, other?: DataType | null): other is T {\n return other instanceof type.constructor;\n}\n\nfunction compareAny(type: T, other?: DataType | null): other is T {\n return (type === other) || compareConstructor(type, other);\n}\n\nfunction compareInt(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.bitWidth === other.bitWidth &&\n type.isSigned === other.isSigned\n );\n}\n\nfunction compareFloat(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.precision === other.precision\n );\n}\n\nfunction compareFixedSizeBinary(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.byteWidth === other.byteWidth\n );\n}\n\nfunction compareDate(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.unit === other.unit\n );\n}\n\nfunction compareTimestamp(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.unit === other.unit &&\n type.timezone === other.timezone\n );\n}\n\nfunction compareTime(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.unit === other.unit &&\n type.bitWidth === other.bitWidth\n );\n}\n\nfunction compareList(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children)\n );\n}\n\nfunction compareStruct(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children)\n );\n}\n\nfunction compareUnion(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.mode === other.mode &&\n type.typeIds.every((x, i) => x === other.typeIds[i]) &&\n instance.compareFields(type.children, other.children)\n );\n}\n\nfunction compareDictionary(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.id === other.id &&\n type.isOrdered === other.isOrdered &&\n instance.visit( type.indices, other.indices) &&\n instance.visit(type.dictionary, other.dictionary)\n );\n}\n\nfunction compareInterval(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.unit === other.unit\n );\n}\n\nfunction compareFixedSizeList(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.listSize === other.listSize &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children)\n );\n}\n\nfunction compareMap(type: T, other?: DataType | null): other is T {\n return (type === other) || (\n compareConstructor(type, other) &&\n type.keysSorted === other.keysSorted &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children)\n );\n}\n\nTypeComparator.prototype.visitNull = compareAny;\nTypeComparator.prototype.visitBool = compareAny;\nTypeComparator.prototype.visitInt = compareInt;\nTypeComparator.prototype.visitInt8 = compareInt;\nTypeComparator.prototype.visitInt16 = compareInt;\nTypeComparator.prototype.visitInt32 = compareInt;\nTypeComparator.prototype.visitInt64 = compareInt;\nTypeComparator.prototype.visitUint8 = compareInt;\nTypeComparator.prototype.visitUint16 = compareInt;\nTypeComparator.prototype.visitUint32 = compareInt;\nTypeComparator.prototype.visitUint64 = compareInt;\nTypeComparator.prototype.visitFloat = compareFloat;\nTypeComparator.prototype.visitFloat16 = compareFloat;\nTypeComparator.prototype.visitFloat32 = compareFloat;\nTypeComparator.prototype.visitFloat64 = compareFloat;\nTypeComparator.prototype.visitUtf8 = compareAny;\nTypeComparator.prototype.visitBinary = compareAny;\nTypeComparator.prototype.visitFixedSizeBinary = compareFixedSizeBinary;\nTypeComparator.prototype.visitDate = compareDate;\nTypeComparator.prototype.visitDateDay = compareDate;\nTypeComparator.prototype.visitDateMillisecond = compareDate;\nTypeComparator.prototype.visitTimestamp = compareTimestamp;\nTypeComparator.prototype.visitTimestampSecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampMillisecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampMicrosecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampNanosecond = compareTimestamp;\nTypeComparator.prototype.visitTime = compareTime;\nTypeComparator.prototype.visitTimeSecond = compareTime;\nTypeComparator.prototype.visitTimeMillisecond = compareTime;\nTypeComparator.prototype.visitTimeMicrosecond = compareTime;\nTypeComparator.prototype.visitTimeNanosecond = compareTime;\nTypeComparator.prototype.visitDecimal = compareAny;\nTypeComparator.prototype.visitList = compareList;\nTypeComparator.prototype.visitStruct = compareStruct;\nTypeComparator.prototype.visitUnion = compareUnion;\nTypeComparator.prototype.visitDenseUnion = compareUnion;\nTypeComparator.prototype.visitSparseUnion = compareUnion;\nTypeComparator.prototype.visitDictionary = compareDictionary;\nTypeComparator.prototype.visitInterval = compareInterval;\nTypeComparator.prototype.visitIntervalDayTime = compareInterval;\nTypeComparator.prototype.visitIntervalYearMonth = compareInterval;\nTypeComparator.prototype.visitFixedSizeList = compareFixedSizeList;\nTypeComparator.prototype.visitMap = compareMap;\n\n/** @ignore */\nexport const instance = new TypeComparator();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/* tslint:disable:class-name */\n\nimport { Field } from './schema';\nimport { flatbuffers } from 'flatbuffers';\nimport { TypedArrayConstructor } from './interfaces';\nimport { VectorType as V, TypeToDataType } from './interfaces';\nimport { instance as comparer } from './visitor/typecomparator';\n\nimport Long = flatbuffers.Long;\nimport {\n Type,\n Precision, UnionMode,\n DateUnit, TimeUnit, IntervalUnit\n} from './enum';\n\n/** @ignore */\nexport type TimeBitWidth = 32 | 64;\n/** @ignore */\nexport type IntBitWidth = 8 | 16 | 32 | 64;\n/** @ignore */\nexport type IsSigned = { 'true': true; 'false': false };\n/** @ignore */\nexport type RowLike =\n ( Iterable<[string, T[keyof T]['TValue'] | null]> )\n & { [P in keyof T]: T[P]['TValue'] | null }\n & { get(key: K): T[K]['TValue'] | null; }\n & { set(key: K, val: T[K]['TValue'] | null): void; }\n ;\n\n/** @ignore */\nexport type MapLike =\n { [P in K['TValue']]: V['TValue'] | null }\n & ( Map )\n ;\n\nexport interface DataType {\n readonly TType: TType;\n readonly TArray: any;\n readonly TValue: any;\n readonly ArrayType: any;\n readonly children: Field[];\n}\n\n/**\n * An abstract base class for classes that encapsulate metadata about each of\n * the logical types that Arrow can represent.\n */\nexport abstract class DataType {\n\n // @ts-ignore\n public [Symbol.toStringTag]: string;\n\n /** @nocollapse */ static isNull (x: any): x is Null { return x && x.typeId === Type.Null; }\n /** @nocollapse */ static isInt (x: any): x is Int_ { return x && x.typeId === Type.Int; }\n /** @nocollapse */ static isFloat (x: any): x is Float { return x && x.typeId === Type.Float; }\n /** @nocollapse */ static isBinary (x: any): x is Binary { return x && x.typeId === Type.Binary; }\n /** @nocollapse */ static isUtf8 (x: any): x is Utf8 { return x && x.typeId === Type.Utf8; }\n /** @nocollapse */ static isBool (x: any): x is Bool { return x && x.typeId === Type.Bool; }\n /** @nocollapse */ static isDecimal (x: any): x is Decimal { return x && x.typeId === Type.Decimal; }\n /** @nocollapse */ static isDate (x: any): x is Date_ { return x && x.typeId === Type.Date; }\n /** @nocollapse */ static isTime (x: any): x is Time_ { return x && x.typeId === Type.Time; }\n /** @nocollapse */ static isTimestamp (x: any): x is Timestamp_ { return x && x.typeId === Type.Timestamp; }\n /** @nocollapse */ static isInterval (x: any): x is Interval_ { return x && x.typeId === Type.Interval; }\n /** @nocollapse */ static isList (x: any): x is List { return x && x.typeId === Type.List; }\n /** @nocollapse */ static isStruct (x: any): x is Struct { return x && x.typeId === Type.Struct; }\n /** @nocollapse */ static isUnion (x: any): x is Union_ { return x && x.typeId === Type.Union; }\n /** @nocollapse */ static isFixedSizeBinary (x: any): x is FixedSizeBinary { return x && x.typeId === Type.FixedSizeBinary; }\n /** @nocollapse */ static isFixedSizeList (x: any): x is FixedSizeList { return x && x.typeId === Type.FixedSizeList; }\n /** @nocollapse */ static isMap (x: any): x is Map_ { return x && x.typeId === Type.Map; }\n /** @nocollapse */ static isDictionary (x: any): x is Dictionary { return x && x.typeId === Type.Dictionary; }\n\n public get typeId(): TType { return Type.NONE; }\n public compareTo(other: DataType): other is TypeToDataType {\n return comparer.visit(this, other);\n }\n\n protected static [Symbol.toStringTag] = ((proto: DataType) => {\n ( proto).children = null;\n ( proto).ArrayType = Array;\n return proto[Symbol.toStringTag] = 'DataType';\n })(DataType.prototype);\n}\n\n/** @ignore */\nexport interface Null extends DataType { TArray: void; TValue: null; }\n/** @ignore */\nexport class Null extends DataType {\n public toString() { return `Null`; }\n public get typeId() { return Type.Null as Type.Null; }\n protected static [Symbol.toStringTag] = ((proto: Null) => {\n return proto[Symbol.toStringTag] = 'Null';\n })(Null.prototype);\n}\n\n/** @ignore */\ntype Ints = Type.Int | Type.Int8 | Type.Int16 | Type.Int32 | Type.Int64 | Type.Uint8 | Type.Uint16 | Type.Uint32 | Type.Uint64;\n/** @ignore */\ntype IType = {\n [Type.Int ]: { bitWidth: IntBitWidth; isSigned: true | false; TArray: IntArray; TValue: number | bigint | Int32Array | Uint32Array; };\n [Type.Int8 ]: { bitWidth: 8; isSigned: true; TArray: Int8Array; TValue: number; };\n [Type.Int16 ]: { bitWidth: 16; isSigned: true; TArray: Int16Array; TValue: number; };\n [Type.Int32 ]: { bitWidth: 32; isSigned: true; TArray: Int32Array; TValue: number; };\n [Type.Int64 ]: { bitWidth: 64; isSigned: true; TArray: Int32Array; TValue: bigint | Int32Array | Uint32Array; };\n [Type.Uint8 ]: { bitWidth: 8; isSigned: false; TArray: Uint8Array; TValue: number; };\n [Type.Uint16]: { bitWidth: 16; isSigned: false; TArray: Uint16Array; TValue: number; };\n [Type.Uint32]: { bitWidth: 32; isSigned: false; TArray: Uint32Array; TValue: number; };\n [Type.Uint64]: { bitWidth: 64; isSigned: false; TArray: Uint32Array; TValue: bigint | Int32Array | Uint32Array; };\n};\n\n/** @ignore */\ninterface Int_ extends DataType { TArray: IType[T]['TArray']; TValue: IType[T]['TValue']; }\n/** @ignore */\nclass Int_ extends DataType {\n constructor(public readonly isSigned: IType[T]['isSigned'],\n public readonly bitWidth: IType[T]['bitWidth']) {\n super();\n }\n public get typeId() { return Type.Int as T; }\n public get ArrayType(): TypedArrayConstructor {\n switch (this.bitWidth) {\n case 8: return this.isSigned ? Int8Array : Uint8Array;\n case 16: return this.isSigned ? Int16Array : Uint16Array;\n case 32: return this.isSigned ? Int32Array : Uint32Array;\n case 64: return this.isSigned ? Int32Array : Uint32Array;\n }\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n public toString() { return `${this.isSigned ? `I` : `Ui`}nt${this.bitWidth}`; }\n protected static [Symbol.toStringTag] = ((proto: Int_) => {\n ( proto).isSigned = null;\n ( proto).bitWidth = null;\n return proto[Symbol.toStringTag] = 'Int';\n })(Int_.prototype);\n}\n\nexport { Int_ as Int };\n\n/** @ignore */\nexport class Int8 extends Int_ { constructor() { super(true, 8); } }\n/** @ignore */\nexport class Int16 extends Int_ { constructor() { super(true, 16); } }\n/** @ignore */\nexport class Int32 extends Int_ { constructor() { super(true, 32); } }\n/** @ignore */\nexport class Int64 extends Int_ { constructor() { super(true, 64); } }\n/** @ignore */\nexport class Uint8 extends Int_ { constructor() { super(false, 8); } }\n/** @ignore */\nexport class Uint16 extends Int_ { constructor() { super(false, 16); } }\n/** @ignore */\nexport class Uint32 extends Int_ { constructor() { super(false, 32); } }\n/** @ignore */\nexport class Uint64 extends Int_ { constructor() { super(false, 64); } }\n\nObject.defineProperty(Int8.prototype, 'ArrayType', { value: Int8Array });\nObject.defineProperty(Int16.prototype, 'ArrayType', { value: Int16Array });\nObject.defineProperty(Int32.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Int64.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Uint8.prototype, 'ArrayType', { value: Uint8Array });\nObject.defineProperty(Uint16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Uint32.prototype, 'ArrayType', { value: Uint32Array });\nObject.defineProperty(Uint64.prototype, 'ArrayType', { value: Uint32Array });\n\n/** @ignore */\ntype Floats = Type.Float | Type.Float16 | Type.Float32 | Type.Float64;\n/** @ignore */\ntype FType = {\n [Type.Float ]: { precision: Precision; TArray: FloatArray; TValue: number; };\n [Type.Float16]: { precision: Precision.HALF; TArray: Uint16Array; TValue: number; };\n [Type.Float32]: { precision: Precision.SINGLE; TArray: Float32Array; TValue: number; };\n [Type.Float64]: { precision: Precision.DOUBLE; TArray: Float64Array; TValue: number; };\n};\n\n/** @ignore */\nexport interface Float extends DataType { TArray: FType[T]['TArray']; TValue: number; }\n/** @ignore */\nexport class Float extends DataType {\n constructor(public readonly precision: Precision) {\n super();\n }\n public get typeId() { return Type.Float as T; }\n public get ArrayType(): TypedArrayConstructor {\n switch (this.precision) {\n case Precision.HALF: return Uint16Array;\n case Precision.SINGLE: return Float32Array;\n case Precision.DOUBLE: return Float64Array;\n }\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n public toString() { return `Float${(this.precision << 5) || 16}`; }\n protected static [Symbol.toStringTag] = ((proto: Float) => {\n ( proto).precision = null;\n return proto[Symbol.toStringTag] = 'Float';\n })(Float.prototype);\n}\n\n/** @ignore */\nexport class Float16 extends Float { constructor() { super(Precision.HALF); } }\n/** @ignore */\nexport class Float32 extends Float { constructor() { super(Precision.SINGLE); } }\n/** @ignore */\nexport class Float64 extends Float { constructor() { super(Precision.DOUBLE); } }\n\nObject.defineProperty(Float16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Float32.prototype, 'ArrayType', { value: Float32Array });\nObject.defineProperty(Float64.prototype, 'ArrayType', { value: Float64Array });\n\n/** @ignore */\nexport interface Binary extends DataType { TArray: Uint8Array; TValue: Uint8Array; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nexport class Binary extends DataType {\n constructor() {\n super();\n }\n public get typeId() { return Type.Binary as Type.Binary; }\n public toString() { return `Binary`; }\n protected static [Symbol.toStringTag] = ((proto: Binary) => {\n ( proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Binary';\n })(Binary.prototype);\n}\n\n/** @ignore */\nexport interface Utf8 extends DataType { TArray: Uint8Array; TValue: string; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nexport class Utf8 extends DataType {\n constructor() {\n super();\n }\n public get typeId() { return Type.Utf8 as Type.Utf8; }\n public toString() { return `Utf8`; }\n protected static [Symbol.toStringTag] = ((proto: Utf8) => {\n ( proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Utf8';\n })(Utf8.prototype);\n}\n\n/** @ignore */\nexport interface Bool extends DataType { TArray: Uint8Array; TValue: boolean; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nexport class Bool extends DataType {\n constructor() {\n super();\n }\n public get typeId() { return Type.Bool as Type.Bool; }\n public toString() { return `Bool`; }\n protected static [Symbol.toStringTag] = ((proto: Bool) => {\n ( proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Bool';\n })(Bool.prototype);\n}\n\n/** @ignore */\nexport interface Decimal extends DataType { TArray: Uint32Array; TValue: Uint32Array; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nexport class Decimal extends DataType {\n constructor(public readonly scale: number,\n public readonly precision: number) {\n super();\n }\n public get typeId() { return Type.Decimal as Type.Decimal; }\n public toString() { return `Decimal[${this.precision}e${this.scale > 0 ? `+` : ``}${this.scale}]`; }\n protected static [Symbol.toStringTag] = ((proto: Decimal) => {\n ( proto).scale = null;\n ( proto).precision = null;\n ( proto).ArrayType = Uint32Array;\n return proto[Symbol.toStringTag] = 'Decimal';\n })(Decimal.prototype);\n}\n\n/** @ignore */\nexport type Dates = Type.Date | Type.DateDay | Type.DateMillisecond;\n/** @ignore */\nexport interface Date_ extends DataType { TArray: Int32Array; TValue: Date; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nexport class Date_ extends DataType {\n constructor(public readonly unit: DateUnit) {\n super();\n }\n public get typeId() { return Type.Date as T; }\n public toString() { return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`; }\n protected static [Symbol.toStringTag] = ((proto: Date_) => {\n ( proto).unit = null;\n ( proto).ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Date';\n })(Date_.prototype);\n}\n\n/** @ignore */\nexport class DateDay extends Date_ { constructor() { super(DateUnit.DAY); } }\n/** @ignore */\nexport class DateMillisecond extends Date_ { constructor() { super(DateUnit.MILLISECOND); } }\n\n/** @ignore */\ntype Times = Type.Time | Type.TimeSecond | Type.TimeMillisecond | Type.TimeMicrosecond | Type.TimeNanosecond;\n/** @ignore */\ntype TimesType = {\n [Type.Time ]: { unit: TimeUnit; TValue: number | Int32Array };\n [Type.TimeSecond ]: { unit: TimeUnit.SECOND; TValue: number; };\n [Type.TimeMillisecond]: { unit: TimeUnit.MILLISECOND; TValue: number; };\n [Type.TimeMicrosecond]: { unit: TimeUnit.MICROSECOND; TValue: Int32Array; };\n [Type.TimeNanosecond ]: { unit: TimeUnit.NANOSECOND; TValue: Int32Array; };\n};\n\n/** @ignore */\ninterface Time_ extends DataType { TArray: Int32Array; TValue: TimesType[T]['TValue']; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nclass Time_ extends DataType {\n constructor(public readonly unit: TimesType[T]['unit'],\n public readonly bitWidth: TimeBitWidth) {\n super();\n }\n public get typeId() { return Type.Time as T; }\n public toString() { return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`; }\n protected static [Symbol.toStringTag] = ((proto: Time_) => {\n ( proto).unit = null;\n ( proto).bitWidth = null;\n ( proto).ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Time';\n })(Time_.prototype);\n}\n\nexport { Time_ as Time };\n\n/** @ignore */\nexport class TimeSecond extends Time_ { constructor() { super(TimeUnit.SECOND, 32); } }\n/** @ignore */\nexport class TimeMillisecond extends Time_ { constructor() { super(TimeUnit.MILLISECOND, 32); } }\n/** @ignore */\nexport class TimeMicrosecond extends Time_ { constructor() { super(TimeUnit.MICROSECOND, 64); } }\n/** @ignore */\nexport class TimeNanosecond extends Time_ { constructor() { super(TimeUnit.NANOSECOND, 64); } }\n\n/** @ignore */\ntype Timestamps = Type.Timestamp | Type.TimestampSecond | Type.TimestampMillisecond | Type.TimestampMicrosecond | Type.TimestampNanosecond;\n/** @ignore */\ninterface Timestamp_ extends DataType { TArray: Int32Array; TValue: number; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nclass Timestamp_ extends DataType {\n constructor(public readonly unit: TimeUnit,\n public readonly timezone?: string | null) {\n super();\n }\n public get typeId() { return Type.Timestamp as T; }\n public toString() { return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ``}>`; }\n protected static [Symbol.toStringTag] = ((proto: Timestamp_) => {\n ( proto).unit = null;\n ( proto).timezone = null;\n ( proto).ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Timestamp';\n })(Timestamp_.prototype);\n}\n\nexport { Timestamp_ as Timestamp };\n\n/** @ignore */\nexport class TimestampSecond extends Timestamp_ { constructor(timezone?: string | null) { super(TimeUnit.SECOND, timezone); } }\n/** @ignore */\nexport class TimestampMillisecond extends Timestamp_ { constructor(timezone?: string | null) { super(TimeUnit.MILLISECOND, timezone); } }\n/** @ignore */\nexport class TimestampMicrosecond extends Timestamp_ { constructor(timezone?: string | null) { super(TimeUnit.MICROSECOND, timezone); } }\n/** @ignore */\nexport class TimestampNanosecond extends Timestamp_ { constructor(timezone?: string | null) { super(TimeUnit.NANOSECOND, timezone); } }\n\n/** @ignore */\ntype Intervals = Type.Interval | Type.IntervalDayTime | Type.IntervalYearMonth;\n/** @ignore */\ninterface Interval_ extends DataType { TArray: Int32Array; TValue: Int32Array; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nclass Interval_ extends DataType {\n constructor(public readonly unit: IntervalUnit) {\n super();\n }\n public get typeId() { return Type.Interval as T; }\n public toString() { return `Interval<${IntervalUnit[this.unit]}>`; }\n protected static [Symbol.toStringTag] = ((proto: Interval_) => {\n ( proto).unit = null;\n ( proto).ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Interval';\n })(Interval_.prototype);\n}\n\nexport { Interval_ as Interval };\n\n/** @ignore */\nexport class IntervalDayTime extends Interval_ { constructor() { super(IntervalUnit.DAY_TIME); } }\n/** @ignore */\nexport class IntervalYearMonth extends Interval_ { constructor() { super(IntervalUnit.YEAR_MONTH); } }\n\n/** @ignore */\nexport interface List extends DataType { TArray: IterableArrayLike; TValue: V; }\n/** @ignore */\nexport class List extends DataType {\n constructor(child: Field) {\n super();\n this.children = [child];\n }\n public readonly children: Field[];\n public get typeId() { return Type.List as Type.List; }\n public toString() { return `List<${this.valueType}>`; }\n public get valueType(): T { return this.children[0].type as T; }\n public get valueField(): Field { return this.children[0] as Field; }\n public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n protected static [Symbol.toStringTag] = ((proto: List) => {\n ( proto).children = null;\n return proto[Symbol.toStringTag] = 'List';\n })(List.prototype);\n}\n\n/** @ignore */\nexport interface Struct extends DataType { TArray: IterableArrayLike>; TValue: RowLike; dataTypes: T; }\n/** @ignore */\nexport class Struct extends DataType {\n constructor(public readonly children: Field[]) {\n super();\n this.children = children;\n }\n public get typeId() { return Type.Struct as Type.Struct; }\n public toString() { return `Struct<{${this.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n protected static [Symbol.toStringTag] = ((proto: Struct) => {\n ( proto).children = null;\n return proto[Symbol.toStringTag] = 'Struct';\n })(Struct.prototype);\n}\n\n/** @ignore */\ntype Unions = Type.Union | Type.DenseUnion | Type.SparseUnion;\n/** @ignore */\ninterface Union_ extends DataType { TArray: Int8Array; TValue: any; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nclass Union_ extends DataType {\n public readonly mode: UnionMode;\n public readonly typeIds: Int32Array;\n public readonly children: Field[];\n public readonly typeIdToChildIndex: { [key: number]: number };\n constructor(mode: UnionMode,\n typeIds: number[] | Int32Array,\n children: Field[]) {\n super();\n this.mode = mode;\n this.children = children;\n this.typeIds = typeIds = Int32Array.from(typeIds);\n this.typeIdToChildIndex = typeIds.reduce((typeIdToChildIndex, typeId, idx) => {\n return (typeIdToChildIndex[typeId] = idx) && typeIdToChildIndex || typeIdToChildIndex;\n }, Object.create(null) as { [key: number]: number });\n }\n public get typeId() { return Type.Union as T; }\n public toString() { return `${this[Symbol.toStringTag]}<${\n this.children.map((x) => `${x.type}`).join(` | `)\n }>`; }\n protected static [Symbol.toStringTag] = ((proto: Union_) => {\n ( proto).mode = null;\n ( proto).typeIds = null;\n ( proto).children = null;\n ( proto).typeIdToChildIndex = null;\n ( proto).ArrayType = Int8Array;\n return proto[Symbol.toStringTag] = 'Union';\n })(Union_.prototype);\n}\n\nexport { Union_ as Union };\n\n/** @ignore */\nexport class DenseUnion extends Union_ {\n constructor(typeIds: number[] | Int32Array, children: Field[]) {\n super(UnionMode.Dense, typeIds, children);\n }\n}\n\n/** @ignore */\nexport class SparseUnion extends Union_ {\n constructor(typeIds: number[] | Int32Array, children: Field[]) {\n super(UnionMode.Sparse, typeIds, children);\n }\n}\n\n/** @ignore */\nexport interface FixedSizeBinary extends DataType { TArray: Uint8Array; TValue: Uint8Array; ArrayType: TypedArrayConstructor; }\n/** @ignore */\nexport class FixedSizeBinary extends DataType {\n constructor(public readonly byteWidth: number) {\n super();\n }\n public get typeId() { return Type.FixedSizeBinary as Type.FixedSizeBinary; }\n public toString() { return `FixedSizeBinary[${this.byteWidth}]`; }\n protected static [Symbol.toStringTag] = ((proto: FixedSizeBinary) => {\n ( proto).byteWidth = null;\n ( proto).ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'FixedSizeBinary';\n })(FixedSizeBinary.prototype);\n}\n\n/** @ignore */\nexport interface FixedSizeList extends DataType { TArray: IterableArrayLike; TValue: V; }\n/** @ignore */\nexport class FixedSizeList extends DataType {\n public readonly children: Field[];\n constructor(public readonly listSize: number, child: Field) {\n super();\n this.children = [child];\n }\n public get typeId() { return Type.FixedSizeList as Type.FixedSizeList; }\n public get valueType(): T { return this.children[0].type as T; }\n public get valueField(): Field { return this.children[0] as Field; }\n public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n public toString() { return `FixedSizeList[${this.listSize}]<${this.valueType}>`; }\n protected static [Symbol.toStringTag] = ((proto: FixedSizeList) => {\n ( proto).children = null;\n ( proto).listSize = null;\n return proto[Symbol.toStringTag] = 'FixedSizeList';\n })(FixedSizeList.prototype);\n}\n\n/** @ignore */\nexport interface Map_ extends DataType {\n TArray: IterableArrayLike>;\n TChild: Struct<{ key: TKey, value: TValue }>;\n TValue: MapLike;\n}\n\n/** @ignore */\nexport class Map_ extends DataType {\n constructor(child: Field>, keysSorted = false) {\n super();\n this.children = [child];\n this.keysSorted = keysSorted;\n }\n public readonly keysSorted: boolean;\n public readonly children: Field>[];\n public get typeId() { return Type.Map as Type.Map; }\n public get keyType(): TKey { return this.children[0].type.children[0].type as TKey; }\n public get valueType(): TValue { return this.children[0].type.children[1].type as TValue; }\n public toString() { return `Map<{${this.children[0].type.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n protected static [Symbol.toStringTag] = ((proto: Map_) => {\n ( proto).children = null;\n ( proto).keysSorted = null;\n return proto[Symbol.toStringTag] = 'Map_';\n })(Map_.prototype);\n}\n\n/** @ignore */\nconst getId = ((atomicDictionaryId) => () => ++atomicDictionaryId)(-1);\n\n/** @ignore */\nexport type TKeys = Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32;\n\n/** @ignore */\nexport interface Dictionary extends DataType { TArray: TKey['TArray']; TValue: T['TValue']; }\n/** @ignore */\nexport class Dictionary extends DataType {\n public readonly id: number;\n public readonly indices: TKey;\n public readonly dictionary: T;\n public readonly isOrdered: boolean;\n constructor(dictionary: T, indices: TKey, id?: Long | number | null, isOrdered?: boolean | null) {\n super();\n this.indices = indices;\n this.dictionary = dictionary;\n this.isOrdered = isOrdered || false;\n this.id = id == null ? getId() : typeof id === 'number' ? id : id.low;\n }\n public get typeId() { return Type.Dictionary as Type.Dictionary; }\n public get children() { return this.dictionary.children; }\n public get valueType(): T { return this.dictionary as T; }\n public get ArrayType(): T['ArrayType'] { return this.dictionary.ArrayType; }\n public toString() { return `Dictionary<${this.indices}, ${this.dictionary}>`; }\n protected static [Symbol.toStringTag] = ((proto: Dictionary) => {\n ( proto).id = null;\n ( proto).indices = null;\n ( proto).isOrdered = null;\n ( proto).dictionary = null;\n return proto[Symbol.toStringTag] = 'Dictionary';\n })(Dictionary.prototype);\n}\n\n/** @ignore */\nexport interface IterableArrayLike extends ArrayLike, Iterable {}\n/** @ignore */\nexport type FloatArray = Uint16Array | Float32Array | Float64Array;\n/** @ignore */\nexport type IntArray = Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array;\n\n/** @ignore */\nexport function strideForType(type: DataType) {\n let t: any = type;\n switch (type.typeId) {\n case Type.Decimal: return 4;\n case Type.Timestamp: return 2;\n case Type.Date: return 1 + (t as Date_).unit;\n case Type.Interval: return 1 + (t as Interval_).unit;\n case Type.Int: return 1 + +((t as Int_).bitWidth > 32);\n case Type.Time: return 1 + +((t as Time_).bitWidth > 32);\n case Type.FixedSizeList: return (t as FixedSizeList).listSize;\n case Type.FixedSizeBinary: return (t as FixedSizeBinary).byteWidth;\n default: return 1;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from './vector';\nimport { truncateBitmap } from './util/bit';\nimport { popcnt_bit_range } from './util/bit';\nimport { BufferType, UnionMode, Type } from './enum';\nimport { DataType, SparseUnion, DenseUnion, strideForType } from './type';\nimport { toArrayBufferView, toUint8Array, toInt32Array } from './util/buffer';\nimport {\n Dictionary,\n Null, Int, Float,\n Binary, Bool, Utf8, Decimal,\n Date_, Time, Timestamp, Interval,\n List, Struct, Union, FixedSizeBinary, FixedSizeList, Map_,\n} from './type';\n\n// When slicing, we do not know the null count of the sliced range without\n// doing some computation. To avoid doing this eagerly, we set the null count\n// to -1 (any negative number will do). When Vector.nullCount is called the\n// first time, the null count will be computed. See ARROW-33\n/** @ignore */ export type kUnknownNullCount = -1;\n/** @ignore */ export const kUnknownNullCount = -1;\n\n/** @ignore */ export type NullBuffer = Uint8Array | null | undefined;\n/** @ignore */ export type TypeIdsBuffer = Int8Array | ArrayLike | Iterable | undefined;\n/** @ignore */ export type ValueOffsetsBuffer = Int32Array | ArrayLike | Iterable | undefined;\n/** @ignore */ export type DataBuffer = T['TArray'] | ArrayLike | Iterable | undefined;\n\n/** @ignore */\nexport interface Buffers {\n [BufferType.OFFSET]: Int32Array;\n [BufferType.DATA]: T['TArray'];\n [BufferType.VALIDITY]: Uint8Array;\n [BufferType.TYPE]: T['TArray'];\n}\n\n/** @ignore */\nexport interface Data {\n readonly TType: T['TType'];\n readonly TArray: T['TArray'];\n readonly TValue: T['TValue'];\n}\n\n/** @ignore */\nexport class Data {\n\n public readonly type: T;\n public readonly length: number;\n public readonly offset: number;\n public readonly stride: number;\n public readonly childData: Data[];\n\n /**\n * The dictionary for this Vector, if any. Only used for Dictionary type.\n */\n public dictionary?: Vector;\n\n public readonly values: Buffers[BufferType.DATA];\n // @ts-ignore\n public readonly typeIds: Buffers[BufferType.TYPE];\n // @ts-ignore\n public readonly nullBitmap: Buffers[BufferType.VALIDITY];\n // @ts-ignore\n public readonly valueOffsets: Buffers[BufferType.OFFSET];\n\n public get typeId(): T['TType'] { return this.type.typeId; }\n public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n public get buffers() {\n return [this.valueOffsets, this.values, this.nullBitmap, this.typeIds] as Buffers;\n }\n public get byteLength(): number {\n let byteLength = 0;\n let { valueOffsets, values, nullBitmap, typeIds } = this;\n valueOffsets && (byteLength += valueOffsets.byteLength);\n values && (byteLength += values.byteLength);\n nullBitmap && (byteLength += nullBitmap.byteLength);\n typeIds && (byteLength += typeIds.byteLength);\n return this.childData.reduce((byteLength, child) => byteLength + child.byteLength, byteLength);\n }\n\n protected _nullCount: number | kUnknownNullCount;\n\n public get nullCount() {\n let nullCount = this._nullCount;\n let nullBitmap: Uint8Array | undefined;\n if (nullCount <= kUnknownNullCount && (nullBitmap = this.nullBitmap)) {\n this._nullCount = nullCount = this.length - popcnt_bit_range(nullBitmap, this.offset, this.offset + this.length);\n }\n return nullCount;\n }\n\n constructor(type: T, offset: number, length: number, nullCount?: number, buffers?: Partial> | Data, childData?: (Data | Vector)[], dictionary?: Vector) {\n this.type = type;\n this.dictionary = dictionary;\n this.offset = Math.floor(Math.max(offset || 0, 0));\n this.length = Math.floor(Math.max(length || 0, 0));\n this._nullCount = Math.floor(Math.max(nullCount || 0, -1));\n this.childData = (childData || []).map((x) => x instanceof Data ? x : x.data) as Data[];\n let buffer: Buffers[keyof Buffers];\n if (buffers instanceof Data) {\n this.stride = buffers.stride;\n this.values = buffers.values;\n this.typeIds = buffers.typeIds;\n this.nullBitmap = buffers.nullBitmap;\n this.valueOffsets = buffers.valueOffsets;\n } else {\n this.stride = strideForType(type);\n if (buffers) {\n (buffer = (buffers as Buffers)[0]) && (this.valueOffsets = buffer);\n (buffer = (buffers as Buffers)[1]) && (this.values = buffer);\n (buffer = (buffers as Buffers)[2]) && (this.nullBitmap = buffer);\n (buffer = (buffers as Buffers)[3]) && (this.typeIds = buffer);\n }\n }\n }\n\n public clone(type: R, offset = this.offset, length = this.length, nullCount = this._nullCount, buffers: Buffers = this, childData: (Data | Vector)[] = this.childData) {\n return new Data(type, offset, length, nullCount, buffers, childData, this.dictionary);\n }\n\n public slice(offset: number, length: number): Data {\n const { stride, typeId, childData } = this;\n // +true === 1, +false === 0, so this means\n // we keep nullCount at 0 if it's already 0,\n // otherwise set to the invalidated flag -1\n const nullCount = +(this._nullCount === 0) - 1;\n const childStride = typeId === 16 /* FixedSizeList */ ? stride : 1;\n const buffers = this._sliceBuffers(offset, length, stride, typeId);\n return this.clone(this.type, this.offset + offset, length, nullCount, buffers,\n // Don't slice children if we have value offsets (the variable-width types)\n (!childData.length || this.valueOffsets) ? childData : this._sliceChildren(childData, childStride * offset, childStride * length));\n }\n\n public _changeLengthAndBackfillNullBitmap(newLength: number): Data {\n if (this.typeId === Type.Null) {\n return this.clone(this.type, 0, newLength, 0);\n }\n const { length, nullCount } = this;\n // start initialized with 0s (nulls), then fill from 0 to length with 1s (not null)\n const bitmap = new Uint8Array(((newLength + 63) & ~63) >> 3).fill(255, 0, length >> 3);\n // set all the bits in the last byte (up to bit `length - length % 8`) to 1 (not null)\n bitmap[length >> 3] = (1 << (length - (length & ~7))) - 1;\n // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n if (nullCount > 0) {\n bitmap.set(truncateBitmap(this.offset, length, this.nullBitmap), 0);\n }\n const buffers = this.buffers;\n buffers[BufferType.VALIDITY] = bitmap;\n return this.clone(this.type, 0, newLength, nullCount + (newLength - length), buffers);\n }\n\n protected _sliceBuffers(offset: number, length: number, stride: number, typeId: T['TType']): Buffers {\n let arr: any, { buffers } = this;\n // If typeIds exist, slice the typeIds buffer\n (arr = buffers[BufferType.TYPE]) && (buffers[BufferType.TYPE] = arr.subarray(offset, offset + length));\n // If offsets exist, only slice the offsets buffer\n (arr = buffers[BufferType.OFFSET]) && (buffers[BufferType.OFFSET] = arr.subarray(offset, offset + length + 1)) ||\n // Otherwise if no offsets, slice the data buffer. Don't slice the data vector for Booleans, since the offset goes by bits not bytes\n (arr = buffers[BufferType.DATA]) && (buffers[BufferType.DATA] = typeId === 6 ? arr : arr.subarray(stride * offset, stride * (offset + length)));\n return buffers;\n }\n\n protected _sliceChildren(childData: Data[], offset: number, length: number): Data[] {\n return childData.map((child) => child.slice(offset, length));\n }\n\n //\n // Convenience methods for creating Data instances for each of the Arrow Vector types\n //\n /** @nocollapse */\n public static new(type: T, offset: number, length: number, nullCount?: number, buffers?: Partial> | Data, childData?: (Data | Vector)[], dictionary?: Vector): Data {\n if (buffers instanceof Data) { buffers = buffers.buffers; } else if (!buffers) { buffers = [] as Partial>; }\n switch (type.typeId) {\n case Type.Null: return Data.Null( type as Null, offset, length) as Data;\n case Type.Int: return Data.Int( type as Int, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Dictionary: return Data.Dictionary( type as Dictionary, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || [], dictionary!) as Data;\n case Type.Float: return Data.Float( type as Float, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Bool: return Data.Bool( type as Bool, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Decimal: return Data.Decimal( type as Decimal, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Date: return Data.Date( type as Date_, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Time: return Data.Time( type as Time, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Timestamp: return Data.Timestamp( type as Timestamp, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Interval: return Data.Interval( type as Interval, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.FixedSizeBinary: return Data.FixedSizeBinary( type as FixedSizeBinary, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []) as Data;\n case Type.Binary: return Data.Binary( type as Binary, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], buffers[BufferType.DATA] || []) as Data;\n case Type.Utf8: return Data.Utf8( type as Utf8, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], buffers[BufferType.DATA] || []) as Data;\n case Type.List: return Data.List( type as List, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], (childData || [])[0]) as Data;\n case Type.FixedSizeList: return Data.FixedSizeList( type as FixedSizeList, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], (childData || [])[0]) as Data;\n case Type.Struct: return Data.Struct( type as Struct, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], childData || []) as Data;\n case Type.Map: return Data.Map( type as Map_, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], (childData || [])[0]) as Data;\n case Type.Union: return Data.Union( type as Union, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.TYPE] || [], buffers[BufferType.OFFSET] || childData, childData) as Data;\n }\n throw new Error(`Unrecognized typeId ${type.typeId}`);\n }\n\n /** @nocollapse */\n public static Null(type: T, offset: number, length: number) {\n return new Data(type, offset, length, 0);\n }\n /** @nocollapse */\n public static Int(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Dictionary(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer, dictionary: Vector) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.indices.ArrayType, data), toUint8Array(nullBitmap)], [], dictionary);\n }\n /** @nocollapse */\n public static Float(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Bool(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Decimal(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Date(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Time(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Timestamp(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Interval(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static FixedSizeBinary(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, data: DataBuffer) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Binary(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, valueOffsets: ValueOffsetsBuffer, data: Uint8Array) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), toUint8Array(data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static Utf8(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, valueOffsets: ValueOffsetsBuffer, data: Uint8Array) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), toUint8Array(data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n public static List(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, valueOffsets: ValueOffsetsBuffer, child: Data | Vector) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), undefined, toUint8Array(nullBitmap)], [child]);\n }\n /** @nocollapse */\n public static FixedSizeList(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, child: Data | Vector) {\n return new Data(type, offset, length, nullCount, [undefined, undefined, toUint8Array(nullBitmap)], [child]);\n }\n /** @nocollapse */\n public static Struct(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, children: (Data | Vector)[]) {\n return new Data(type, offset, length, nullCount, [undefined, undefined, toUint8Array(nullBitmap)], children);\n }\n /** @nocollapse */\n public static Map(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, valueOffsets: ValueOffsetsBuffer, child: (Data | Vector)) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), undefined, toUint8Array(nullBitmap)], [child]);\n }\n public static Union(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, typeIds: TypeIdsBuffer, children: (Data | Vector)[], _?: any): Data;\n public static Union(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, typeIds: TypeIdsBuffer, valueOffsets: ValueOffsetsBuffer, children: (Data | Vector)[]): Data;\n public static Union(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, typeIds: TypeIdsBuffer, valueOffsetsOrChildren: ValueOffsetsBuffer | (Data | Vector)[], children?: (Data | Vector)[]): Data;\n /** @nocollapse */\n public static Union(type: T, offset: number, length: number, nullCount: number, nullBitmap: NullBuffer, typeIds: TypeIdsBuffer, valueOffsetsOrChildren: ValueOffsetsBuffer | (Data | Vector)[], children?: (Data | Vector)[]) {\n const buffers = [\n undefined, undefined,\n toUint8Array(nullBitmap),\n toArrayBufferView(type.ArrayType, typeIds)\n ] as Partial>;\n if (type.mode === UnionMode.Sparse) {\n return new Data(type, offset, length, nullCount, buffers, valueOffsetsOrChildren as (Data | Vector)[]);\n }\n buffers[BufferType.OFFSET] = toInt32Array( valueOffsetsOrChildren);\n return new Data(type, offset, length, nullCount, buffers, children);\n }\n}\n\n(Data.prototype as any).childData = Object.freeze([]);\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/** @ignore */ const undf = void (0);\n\n/** @ignore */\nexport function valueToString(x: any) {\n if (x === null) { return 'null'; }\n if (x === undf) { return 'undefined'; }\n switch (typeof x) {\n case 'number': return `${x}`;\n case 'bigint': return `${x}`;\n case 'string': return `\"${x}\"`;\n }\n // If [Symbol.toPrimitive] is implemented (like in BN)\n // use it instead of JSON.stringify(). This ensures we\n // print BigInts, Decimals, and Binary in their native\n // representation\n if (typeof x[Symbol.toPrimitive] === 'function') {\n return x[Symbol.toPrimitive]('string');\n }\n return ArrayBuffer.isView(x) ? `[${x}]` : JSON.stringify(x);\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { DataType } from '../type';\nimport { valueToString } from '../util/pretty';\nimport { BigIntAvailable } from '../util/compat';\n\n/**\n * Dynamically compile the null values into an `isValid()` function whose\n * implementation is a switch statement. Microbenchmarks in v8 indicate\n * this approach is 25% faster than using an ES6 Map.\n *\n * @example\n * console.log(createIsValidFunction([null, 'N/A', NaN]));\n * `function (x) {\n * if (x !== x) return false;\n * switch (x) {\n * case null:\n * case \"N/A\":\n * return false;\n * }\n * return true;\n * }`\n *\n * @ignore\n * @param nullValues\n */\nexport function createIsValidFunction(nullValues?: ReadonlyArray) {\n\n if (!nullValues || nullValues.length <= 0) {\n // @ts-ignore\n return function isValid(value: any) { return true; };\n }\n\n let fnBody = '';\n let noNaNs = nullValues.filter((x) => x === x);\n\n if (noNaNs.length > 0) {\n fnBody = `\n switch (x) {${noNaNs.map((x) => `\n case ${valueToCase(x)}:`).join('')}\n return false;\n }`;\n }\n\n // NaN doesn't equal anything including itself, so it doesn't work as a\n // switch case. Instead we must explicitly check for NaN before the switch.\n if (nullValues.length !== noNaNs.length) {\n fnBody = `if (x !== x) return false;\\n${fnBody}`;\n }\n\n return new Function(`x`, `${fnBody}\\nreturn true;`) as (value: T['TValue'] | TNull) => boolean;\n}\n\n/** @ignore */\nfunction valueToCase(x: any) {\n if (typeof x !== 'bigint') {\n return valueToString(x);\n } else if (BigIntAvailable) {\n return `${valueToString(x)}n`;\n }\n return `\"${valueToString(x)}\"`;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { memcpy } from '../util/buffer';\nimport { BigIntAvailable, BigInt64Array, BigUint64Array } from '../util/compat';\nimport {\n TypedArray, TypedArrayConstructor,\n BigIntArray, BigIntArrayConstructor\n} from '../interfaces';\n\n/** @ignore */ type DataValue = T extends TypedArray ? number : T extends BigIntArray ? WideValue : T;\n/** @ignore */ type WideValue = T extends BigIntArray ? bigint | Int32Array | Uint32Array : never;\n/** @ignore */ type ArrayCtor =\n T extends TypedArray ? TypedArrayConstructor :\n T extends BigIntArray ? BigIntArrayConstructor :\n any;\n\n/** @ignore */\nconst roundLengthUpToNearest64Bytes = (len: number, BPE: number) => ((((len * BPE) + 63) & ~63) || 64) / BPE;\n/** @ignore */\nconst sliceOrExtendArray = (arr: T, len = 0) => (\n arr.length >= len ? arr.subarray(0, len) : memcpy(new (arr.constructor as any)(len), arr, 0)\n) as T;\n\n/** @ignore */\nexport interface BufferBuilder> {\n readonly offset: number;\n}\n\n/** @ignore */\nexport class BufferBuilder> {\n\n constructor(buffer: T, stride = 1) {\n this.buffer = buffer;\n this.stride = stride;\n this.BYTES_PER_ELEMENT = buffer.BYTES_PER_ELEMENT;\n this.ArrayType = buffer.constructor as ArrayCtor;\n this._resize(this.length = buffer.length / stride | 0);\n }\n\n public buffer: T;\n public length: number;\n public readonly stride: number;\n public readonly ArrayType: ArrayCtor;\n public readonly BYTES_PER_ELEMENT: number;\n\n public get byteLength() { return this.length * this.stride * this.BYTES_PER_ELEMENT | 0; }\n public get reservedLength() { return this.buffer.length / this.stride; }\n public get reservedByteLength() { return this.buffer.byteLength; }\n\n // @ts-ignore\n public set(index: number, value: TValue) { return this; }\n public append(value: TValue) { return this.set(this.length, value); }\n public reserve(extra: number) {\n if (extra > 0) {\n this.length += extra;\n const stride = this.stride;\n const length = this.length * stride;\n const reserved = this.buffer.length;\n if (length >= reserved) {\n this._resize(reserved === 0\n ? roundLengthUpToNearest64Bytes(length * 1, this.BYTES_PER_ELEMENT)\n : roundLengthUpToNearest64Bytes(length * 2, this.BYTES_PER_ELEMENT)\n );\n }\n }\n return this;\n }\n public flush(length = this.length) {\n length = roundLengthUpToNearest64Bytes(length * this.stride, this.BYTES_PER_ELEMENT);\n const array = sliceOrExtendArray(this.buffer, length);\n this.clear();\n return array;\n }\n public clear() {\n this.length = 0;\n this._resize(0);\n return this;\n }\n protected _resize(newLength: number) {\n return this.buffer = memcpy(new this.ArrayType(newLength), this.buffer);\n }\n}\n\n(BufferBuilder.prototype as any).offset = 0;\n\n/** @ignore */\nexport class DataBufferBuilder extends BufferBuilder {\n public last() { return this.get(this.length - 1); }\n public get(index: number) { return this.buffer[index]; }\n public set(index: number, value: number) {\n this.reserve(index - this.length + 1);\n this.buffer[index * this.stride] = value;\n return this;\n }\n}\n\n/** @ignore */\nexport class BitmapBufferBuilder extends DataBufferBuilder {\n\n constructor(data = new Uint8Array(0)) { super(data, 1 / 8); }\n\n public numValid = 0;\n public get numInvalid() { return this.length - this.numValid; }\n public get(idx: number) { return this.buffer[idx >> 3] >> idx % 8 & 1; }\n public set(idx: number, val: number) {\n const { buffer } = this.reserve(idx - this.length + 1);\n const byte = idx >> 3, bit = idx % 8, cur = buffer[byte] >> bit & 1;\n // If `val` is truthy and the current bit is 0, flip it to 1 and increment `numValid`.\n // If `val` is falsey and the current bit is 1, flip it to 0 and decrement `numValid`.\n val ? cur === 0 && ((buffer[byte] |= (1 << bit)), ++this.numValid)\n : cur === 1 && ((buffer[byte] &= ~(1 << bit)), --this.numValid);\n return this;\n }\n public clear() {\n this.numValid = 0;\n return super.clear();\n }\n}\n\n/** @ignore */\nexport class OffsetsBufferBuilder extends DataBufferBuilder {\n constructor(data = new Int32Array(1)) { super(data, 1); }\n public append(value: number) {\n return this.set(this.length - 1, value);\n }\n public set(index: number, value: number) {\n const offset = this.length - 1;\n const buffer = this.reserve(index - offset + 1).buffer;\n if (offset < index++) {\n buffer.fill(buffer[offset], offset, index);\n }\n buffer[index] = buffer[index - 1] + value;\n return this;\n }\n public flush(length = this.length - 1) {\n if (length > this.length) {\n this.set(length - 1, 0);\n }\n return super.flush(length + 1);\n }\n}\n\n/** @ignore */\nexport class WideBufferBuilder extends BufferBuilder> {\n // @ts-ignore\n public buffer64: R;\n // @ts-ignore\n protected _ArrayType64: BigIntArrayConstructor;\n public get ArrayType64() {\n return this._ArrayType64 || (this._ArrayType64 = > (this.buffer instanceof Int32Array ? BigInt64Array : BigUint64Array));\n }\n public set(index: number, value: DataValue) {\n this.reserve(index - this.length + 1);\n switch (typeof value) {\n case 'bigint': this.buffer64[index] = value; break;\n case 'number': this.buffer[index * this.stride] = value; break;\n default: this.buffer.set(value as TypedArray, index * this.stride);\n }\n return this;\n }\n protected _resize(newLength: number) {\n const data = super._resize(newLength);\n const length = data.byteLength / (this.BYTES_PER_ELEMENT * this.stride);\n if (BigIntAvailable) {\n this.buffer64 = new this.ArrayType64(data.buffer, data.byteOffset, length);\n }\n return data;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from './vector';\nimport { BufferType } from './enum';\nimport { Data, Buffers } from './data';\nimport { createIsValidFunction } from './builder/valid';\nimport { BuilderType as B, VectorType as V} from './interfaces';\nimport { BufferBuilder, BitmapBufferBuilder, DataBufferBuilder, OffsetsBufferBuilder } from './builder/buffer';\nimport {\n DataType, strideForType,\n Float, Int, Decimal, FixedSizeBinary,\n Date_, Time, Timestamp, Interval,\n Utf8, Binary, List, Map_\n} from './type';\n\n/**\n * A set of options required to create a `Builder` instance for a given `DataType`.\n * @see {@link Builder}\n */\nexport interface BuilderOptions {\n type: T;\n nullValues?: TNull[] | ReadonlyArray | null;\n children?: { [key: string]: BuilderOptions; } | BuilderOptions[];\n}\n\n/**\n * A set of options to create an Iterable or AsyncIterable `Builder` transform function.\n * @see {@link Builder.throughIterable}\n * @see {@link Builder.throughAsyncIterable}\n */\n\nexport interface IterableBuilderOptions extends BuilderOptions {\n highWaterMark?: number;\n queueingStrategy?: 'bytes' | 'count';\n dictionaryHashFunction?: (value: any) => string | number;\n valueToChildTypeId?: (builder: Builder, value: any, offset: number) => number;\n}\n\n/**\n * An abstract base class for types that construct Arrow Vectors from arbitrary JavaScript values.\n *\n * A `Builder` is responsible for writing arbitrary JavaScript values\n * to ArrayBuffers and/or child Builders according to the Arrow specification\n * for each DataType, creating or resizing the underlying ArrayBuffers as necessary.\n *\n * The `Builder` for each Arrow `DataType` handles converting and appending\n * values for a given `DataType`. The high-level {@link Builder.new `Builder.new()`} convenience\n * method creates the specific `Builder` subclass for the supplied `DataType`.\n *\n * Once created, `Builder` instances support both appending values to the end\n * of the `Builder`, and random-access writes to specific indices\n * (`Builder.prototype.append(value)` is a convenience method for\n * `builder.set(builder.length, value)`). Appending or setting values beyond the\n * Builder's current length may cause the builder to grow its underlying buffers\n * or child Builders (if applicable) to accommodate the new values.\n *\n * After enough values have been written to a `Builder`, `Builder.prototype.flush()`\n * will commit the values to the underlying ArrayBuffers (or child Builders). The\n * internal Builder state will be reset, and an instance of `Data` is returned.\n * Alternatively, `Builder.prototype.toVector()` will flush the `Builder` and return\n * an instance of `Vector` instead.\n *\n * When there are no more values to write, use `Builder.prototype.finish()` to\n * finalize the `Builder`. This does not reset the internal state, so it is\n * necessary to call `Builder.prototype.flush()` or `toVector()` one last time\n * if there are still values queued to be flushed.\n *\n * Note: calling `Builder.prototype.finish()` is required when using a `DictionaryBuilder`,\n * because this is when it flushes the values that have been enqueued in its internal\n * dictionary's `Builder`, and creates the `dictionaryVector` for the `Dictionary` `DataType`.\n *\n * ```ts\n * import { Builder, Utf8 } from 'apache-arrow';\n *\n * const utf8Builder = Builder.new({\n * type: new Utf8(),\n * nullValues: [null, 'n/a']\n * });\n *\n * utf8Builder\n * .append('hello')\n * .append('n/a')\n * .append('world')\n * .append(null);\n *\n * const utf8Vector = utf8Builder.finish().toVector();\n *\n * console.log(utf8Vector.toJSON());\n * // > [\"hello\", null, \"world\", null]\n * ```\n *\n * @typeparam T The `DataType` of this `Builder`.\n * @typeparam TNull The type(s) of values which will be considered null-value sentinels.\n */\nexport abstract class Builder {\n\n /**\n * Create a `Builder` instance based on the `type` property of the supplied `options` object.\n * @param {BuilderOptions} options An object with a required `DataType` instance\n * and other optional parameters to be passed to the `Builder` subclass for the given `type`.\n *\n * @typeparam T The `DataType` of the `Builder` to create.\n * @typeparam TNull The type(s) of values which will be considered null-value sentinels.\n * @nocollapse\n */\n // @ts-ignore\n public static new(options: BuilderOptions): B {}\n\n /** @nocollapse */\n // @ts-ignore\n public static throughNode(options: import('./io/node/builder').BuilderDuplexOptions): import('stream').Duplex {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n // @ts-ignore\n public static throughDOM(options: import('./io/whatwg/builder').BuilderTransformOptions): import('./io/whatwg/builder').BuilderTransform {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n\n /**\n * Transform a synchronous `Iterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `Iterable` of values to\n * transform. When called, this function returns an Iterator of `Vector`.\n *\n * The resulting `Iterator>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `Iterator>`\n * will flush the underlying `Builder` (and yield a new `Vector`) once the\n * Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `Iterator>` will flush\n * the underlying `Builder` (and yield a new `Vector`) once its `byteLength`\n * reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `Iterable` of values to\n * write, and returns an `Iterator` that yields Vectors according\n * to the chunking semantics defined in the `options` argument.\n * @nocollapse\n */\n public static throughIterable(options: IterableBuilderOptions) {\n return throughIterable(options);\n }\n\n /**\n * Transform an `AsyncIterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `AsyncIterable` of values to\n * transform. When called, this function returns an AsyncIterator of `Vector`.\n *\n * The resulting `AsyncIterator>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `AsyncIterator>`\n * will flush the underlying `Builder` (and yield a new `Vector`) once the\n * Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `AsyncIterator>` will flush\n * the underlying `Builder` (and yield a new `Vector`) once its `byteLength`\n * reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `AsyncIterable` of values\n * to write, and returns an `AsyncIterator` that yields Vectors\n * according to the chunking semantics defined in the `options`\n * argument.\n * @nocollapse\n */\n public static throughAsyncIterable(options: IterableBuilderOptions) {\n return throughAsyncIterable(options);\n }\n\n /**\n * Construct a builder with the given Arrow DataType with optional null values,\n * which will be interpreted as \"null\" when set or appended to the `Builder`.\n * @param {{ type: T, nullValues?: any[] }} options A `BuilderOptions` object used to create this `Builder`.\n */\n constructor({ 'type': type, 'nullValues': nulls }: BuilderOptions) {\n this.type = type;\n this.children = [];\n this.nullValues = nulls;\n this.stride = strideForType(type);\n this._nulls = new BitmapBufferBuilder();\n if (nulls && nulls.length > 0) {\n this._isValid = createIsValidFunction(nulls);\n }\n }\n\n /**\n * The Builder's `DataType` instance.\n * @readonly\n */\n public type: T;\n /**\n * The number of values written to the `Builder` that haven't been flushed yet.\n * @readonly\n */\n public length = 0;\n /**\n * A boolean indicating whether `Builder.prototype.finish()` has been called on this `Builder`.\n * @readonly\n */\n public finished = false;\n /**\n * The number of elements in the underlying values TypedArray that\n * represent a single logical element, determined by this Builder's\n * `DataType`. This is 1 for most types, but is larger when the `DataType`\n * is `Int64`, `Uint64`, `Decimal`, `DateMillisecond`, certain variants of\n * `Interval`, `Time`, or `Timestamp`, `FixedSizeBinary`, and `FixedSizeList`.\n * @readonly\n */\n public readonly stride: number;\n public readonly children: Builder[];\n /**\n * The list of null-value sentinels for this `Builder`. When one of these values\n * is written to the `Builder` (either via `Builder.prototype.set()` or `Builder.prototype.append()`),\n * a 1-bit is written to this Builder's underlying null BitmapBufferBuilder.\n * @readonly\n */\n public readonly nullValues?: TNull[] | ReadonlyArray | null;\n\n /**\n * Flush the `Builder` and return a `Vector`.\n * @returns {Vector} A `Vector` of the flushed values.\n */\n public toVector() { return Vector.new(this.flush()); }\n\n public get ArrayType() { return this.type.ArrayType; }\n public get nullCount() { return this._nulls.numInvalid; }\n public get numChildren() { return this.children.length; }\n\n /**\n * @returns The aggregate length (in bytes) of the values that have been written.\n */\n public get byteLength(): number {\n let size = 0;\n this._offsets && (size += this._offsets.byteLength);\n this._values && (size += this._values.byteLength);\n this._nulls && (size += this._nulls.byteLength);\n this._typeIds && (size += this._typeIds.byteLength);\n return this.children.reduce((size, child) => size + child.byteLength, size);\n }\n\n /**\n * @returns The aggregate number of rows that have been reserved to write new values.\n */\n public get reservedLength(): number {\n return this._nulls.reservedLength;\n }\n\n /**\n * @returns The aggregate length (in bytes) that has been reserved to write new values.\n */\n public get reservedByteLength(): number {\n let size = 0;\n this._offsets && (size += this._offsets.reservedByteLength);\n this._values && (size += this._values.reservedByteLength);\n this._nulls && (size += this._nulls.reservedByteLength);\n this._typeIds && (size += this._typeIds.reservedByteLength);\n return this.children.reduce((size, child) => size + child.reservedByteLength, size);\n }\n\n // @ts-ignore\n protected _offsets: DataBufferBuilder;\n public get valueOffsets() { return this._offsets ? this._offsets.buffer : null; }\n\n // @ts-ignore\n protected _values: BufferBuilder;\n public get values() { return this._values ? this._values.buffer : null; }\n\n protected _nulls: BitmapBufferBuilder;\n public get nullBitmap() { return this._nulls ? this._nulls.buffer : null; }\n\n // @ts-ignore\n protected _typeIds: DataBufferBuilder;\n public get typeIds() { return this._typeIds ? this._typeIds.buffer : null; }\n\n // @ts-ignore\n protected _isValid: (value: T['TValue'] | TNull) => boolean;\n // @ts-ignore\n protected _setValue: (inst: Builder, index: number, value: T['TValue']) => void;\n\n /**\n * Appends a value (or null) to this `Builder`.\n * This is equivalent to `builder.set(builder.length, value)`.\n * @param {T['TValue'] | TNull } value The value to append.\n */\n public append(value: T['TValue'] | TNull) { return this.set(this.length, value); }\n\n /**\n * Validates whether a value is valid (true), or null (false)\n * @param {T['TValue'] | TNull } value The value to compare against null the value representations\n */\n // @ts-ignore\n public isValid(value: T['TValue'] | TNull): boolean { return this._isValid(value); }\n\n /**\n * Write a value (or null-value sentinel) at the supplied index.\n * If the value matches one of the null-value representations, a 1-bit is\n * written to the null `BitmapBufferBuilder`. Otherwise, a 0 is written to\n * the null `BitmapBufferBuilder`, and the value is passed to\n * `Builder.prototype.setValue()`.\n * @param {number} index The index of the value to write.\n * @param {T['TValue'] | TNull } value The value to write at the supplied index.\n * @returns {this} The updated `Builder` instance.\n */\n public set(index: number, value: T['TValue'] | TNull) {\n if (this.setValid(index, this.isValid(value))) {\n this.setValue(index, value);\n }\n return this;\n }\n\n /**\n * Write a value to the underlying buffers at the supplied index, bypassing\n * the null-value check. This is a low-level method that\n * @param {number} index\n * @param {T['TValue'] | TNull } value\n */\n // @ts-ignore\n public setValue(index: number, value: T['TValue']) { this._setValue(this, index, value); }\n public setValid(index: number, valid: boolean) {\n this.length = this._nulls.set(index, +valid).length;\n return valid;\n }\n\n // @ts-ignore\n public addChild(child: Builder, name = `${this.numChildren}`) {\n throw new Error(`Cannot append children to non-nested type \"${this.type}\"`);\n }\n\n /**\n * Retrieve the child `Builder` at the supplied `index`, or null if no child\n * exists at that index.\n * @param {number} index The index of the child `Builder` to retrieve.\n * @returns {Builder | null} The child Builder at the supplied index or null.\n */\n public getChildAt(index: number): Builder | null {\n return this.children[index] || null;\n }\n\n /**\n * Commit all the values that have been written to their underlying\n * ArrayBuffers, including any child Builders if applicable, and reset\n * the internal `Builder` state.\n * @returns A `Data` of the buffers and childData representing the values written.\n */\n public flush() {\n\n const buffers: any = [];\n const values = this._values;\n const offsets = this._offsets;\n const typeIds = this._typeIds;\n const { length, nullCount } = this;\n\n if (typeIds) { /* Unions */\n buffers[BufferType.TYPE] = typeIds.flush(length);\n // DenseUnions\n offsets && (buffers[BufferType.OFFSET] = offsets.flush(length));\n } else if (offsets) { /* Variable-width primitives (Binary, Utf8) and Lists */\n // Binary, Utf8\n values && (buffers[BufferType.DATA] = values.flush(offsets.last()));\n buffers[BufferType.OFFSET] = offsets.flush(length);\n } else if (values) { /* Fixed-width primitives (Int, Float, Decimal, Time, Timestamp, and Interval) */\n buffers[BufferType.DATA] = values.flush(length);\n }\n\n nullCount > 0 && (buffers[BufferType.VALIDITY] = this._nulls.flush(length));\n\n const data = Data.new(\n this.type, 0, length, nullCount, buffers as Buffers,\n this.children.map((child) => child.flush())) as Data;\n\n this.clear();\n\n return data;\n }\n\n /**\n * Finalize this `Builder`, and child builders if applicable.\n * @returns {this} The finalized `Builder` instance.\n */\n public finish() {\n this.finished = true;\n this.children.forEach((child) => child.finish());\n return this;\n }\n\n /**\n * Clear this Builder's internal state, including child Builders if applicable, and reset the length to 0.\n * @returns {this} The cleared `Builder` instance.\n */\n public clear() {\n this.length = 0;\n this._offsets && (this._offsets.clear());\n this._values && (this._values.clear());\n this._nulls && (this._nulls.clear());\n this._typeIds && (this._typeIds.clear());\n this.children.forEach((child) => child.clear());\n return this;\n }\n}\n\n(Builder.prototype as any).length = 1;\n(Builder.prototype as any).stride = 1;\n(Builder.prototype as any).children = null;\n(Builder.prototype as any).finished = false;\n(Builder.prototype as any).nullValues = null;\n(Builder.prototype as any)._isValid = () => true;\n\n/** @ignore */\nexport abstract class FixedWidthBuilder extends Builder {\n constructor(opts: BuilderOptions) {\n super(opts);\n this._values = new DataBufferBuilder(new this.ArrayType(0), this.stride);\n }\n public setValue(index: number, value: T['TValue']) {\n const values = this._values;\n values.reserve(index - values.length + 1);\n return super.setValue(index, value);\n }\n}\n\n/** @ignore */\nexport abstract class VariableWidthBuilder extends Builder {\n protected _pendingLength: number = 0;\n protected _offsets: OffsetsBufferBuilder;\n protected _pending: Map | undefined;\n constructor(opts: BuilderOptions) {\n super(opts);\n this._offsets = new OffsetsBufferBuilder();\n }\n public setValue(index: number, value: T['TValue']) {\n const pending = this._pending || (this._pending = new Map());\n const current = pending.get(index);\n current && (this._pendingLength -= current.length);\n this._pendingLength += value.length;\n pending.set(index, value);\n }\n public setValid(index: number, isValid: boolean) {\n if (!super.setValid(index, isValid)) {\n (this._pending || (this._pending = new Map())).set(index, undefined);\n return false;\n }\n return true;\n }\n public clear() {\n this._pendingLength = 0;\n this._pending = undefined;\n return super.clear();\n }\n public flush() {\n this._flush();\n return super.flush();\n }\n public finish() {\n this._flush();\n return super.finish();\n }\n protected _flush() {\n const pending = this._pending;\n const pendingLength = this._pendingLength;\n this._pendingLength = 0;\n this._pending = undefined;\n if (pending && pending.size > 0) {\n this._flushPending(pending, pendingLength);\n }\n return this;\n }\n protected abstract _flushPending(pending: Map, pendingLength: number): void;\n}\n\n/** @ignore */\ntype ThroughIterable = (source: Iterable) => IterableIterator>;\n\n/** @ignore */\nfunction throughIterable(options: IterableBuilderOptions): ThroughIterable {\n const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? 1000 : 2 ** 14 } = options;\n const sizeProperty: 'length' | 'byteLength' = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n return function*(source: Iterable) {\n let numChunks = 0;\n let builder = Builder.new(options);\n for (const value of source) {\n if (builder.append(value)[sizeProperty] >= highWaterMark) {\n ++numChunks && (yield builder.toVector());\n }\n }\n if (builder.finish().length > 0 || numChunks === 0) {\n yield builder.toVector();\n }\n };\n}\n\n/** @ignore */\ntype ThroughAsyncIterable = (source: Iterable | AsyncIterable) => AsyncIterableIterator>;\n\n/** @ignore */\nfunction throughAsyncIterable(options: IterableBuilderOptions): ThroughAsyncIterable {\n const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? 1000 : 2 ** 14 } = options;\n const sizeProperty: 'length' | 'byteLength' = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n return async function* (source: Iterable | AsyncIterable) {\n let numChunks = 0;\n let builder = Builder.new(options);\n for await (const value of source) {\n if (builder.append(value)[sizeProperty] >= highWaterMark) {\n ++numChunks && (yield builder.toVector());\n }\n }\n if (builder.finish().length > 0 || numChunks === 0) {\n yield builder.toVector();\n }\n };\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Bool } from '../type';\nimport { BitmapBufferBuilder } from './buffer';\nimport { Builder, BuilderOptions } from '../builder';\n\n/** @ignore */\nexport class BoolBuilder extends Builder {\n constructor(options: BuilderOptions) {\n super(options);\n this._values = new BitmapBufferBuilder();\n }\n public setValue(index: number, value: boolean) {\n this._values.set(index, +value);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Null } from '../type';\nimport { Builder } from '../builder';\n\n/** @ignore */\nexport class NullBuilder extends Builder {\n // @ts-ignore\n public setValue(index: number, value: null) {}\n public setValid(index: number, valid: boolean) {\n this.length = Math.max(index + 1, this.length);\n return valid;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FixedWidthBuilder } from '../builder';\nimport { Date_, DateDay, DateMillisecond } from '../type';\n\n/** @ignore */\nexport class DateBuilder extends FixedWidthBuilder {}\n/** @ignore */\nexport class DateDayBuilder extends DateBuilder {}\n/** @ignore */\nexport class DateMillisecondBuilder extends DateBuilder {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Decimal } from '../type';\nimport { FixedWidthBuilder } from '../builder';\n\n/** @ignore */\nexport class DecimalBuilder extends FixedWidthBuilder {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { IntBuilder } from './int';\nimport { Dictionary, DataType } from '../type';\nimport { Builder, BuilderOptions } from '../builder';\n\ntype DictionaryHashFunction = (x: any) => string | number;\n\nexport interface DictionaryBuilderOptions extends BuilderOptions {\n dictionaryHashFunction?: DictionaryHashFunction;\n}\n\n/** @ignore */\nexport class DictionaryBuilder extends Builder {\n\n protected _dictionaryOffset: number;\n protected _dictionary?: Vector;\n protected _keysToIndices: { [key: string]: number };\n public readonly indices: IntBuilder;\n public readonly dictionary: Builder;\n\n constructor({ 'type': type, 'nullValues': nulls, 'dictionaryHashFunction': hashFn }: DictionaryBuilderOptions) {\n super({ type: new Dictionary(type.dictionary, type.indices, type.id, type.isOrdered) as T });\n this._nulls = null;\n this._dictionaryOffset = 0;\n this._keysToIndices = Object.create(null);\n this.indices = Builder.new({ 'type': this.type.indices, 'nullValues': nulls }) as IntBuilder;\n this.dictionary = Builder.new({ 'type': this.type.dictionary, 'nullValues': null }) as Builder;\n if (typeof hashFn === 'function') {\n this.valueToKey = hashFn;\n }\n }\n\n public get values() { return this.indices.values; }\n public get nullCount() { return this.indices.nullCount; }\n public get nullBitmap() { return this.indices.nullBitmap; }\n public get byteLength() { return this.indices.byteLength + this.dictionary.byteLength; }\n public get reservedLength() { return this.indices.reservedLength + this.dictionary.reservedLength; }\n public get reservedByteLength() { return this.indices.reservedByteLength + this.dictionary.reservedByteLength; }\n public isValid(value: T['TValue'] | TNull) { return this.indices.isValid(value); }\n public setValid(index: number, valid: boolean) {\n const indices = this.indices;\n valid = indices.setValid(index, valid);\n this.length = indices.length;\n return valid;\n }\n public setValue(index: number, value: T['TValue']) {\n let keysToIndices = this._keysToIndices;\n let key = this.valueToKey(value);\n let idx = keysToIndices[key];\n if (idx === undefined) {\n keysToIndices[key] = idx = this._dictionaryOffset + this.dictionary.append(value).length - 1;\n }\n return this.indices.setValue(index, idx);\n }\n public flush() {\n const type = this.type;\n const prev = this._dictionary;\n const curr = this.dictionary.toVector();\n const data = this.indices.flush().clone(type);\n data.dictionary = prev ? prev.concat(curr) : curr;\n this.finished || (this._dictionaryOffset += curr.length);\n this._dictionary = data.dictionary as Vector;\n this.clear();\n return data;\n }\n public finish() {\n this.indices.finish();\n this.dictionary.finish();\n this._dictionaryOffset = 0;\n this._keysToIndices = Object.create(null);\n return super.finish();\n }\n public clear() {\n this.indices.clear();\n this.dictionary.clear();\n return super.clear();\n }\n public valueToKey(val: any): string | number {\n return typeof val === 'string' ? val : `${val}`;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FixedSizeBinary } from '../type';\nimport { FixedWidthBuilder } from '../builder';\n\n/** @ignore */\nexport class FixedSizeBinaryBuilder extends FixedWidthBuilder {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nconst f64 = new Float64Array(1);\nconst u32 = new Uint32Array(f64.buffer);\n\n/**\n * Convert uint16 (logically a float16) to a JS float64. Inspired by numpy's `npy_half_to_double`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L29\n * @param h {number} the uint16 to convert\n * @private\n * @ignore\n */\nexport function uint16ToFloat64(h: number) {\n let expo = (h & 0x7C00) >> 10;\n let sigf = (h & 0x03FF) / 1024;\n let sign = (-1) ** ((h & 0x8000) >> 15);\n switch (expo) {\n case 0x1F: return sign * (sigf ? NaN : 1 / 0);\n case 0x00: return sign * (sigf ? 6.103515625e-5 * sigf : 0);\n }\n return sign * (2 ** (expo - 15)) * (1 + sigf);\n}\n\n/**\n * Convert a float64 to uint16 (assuming the float64 is logically a float16). Inspired by numpy's `npy_double_to_half`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L43\n * @param d {number} The float64 to convert\n * @private\n * @ignore\n */\nexport function float64ToUint16(d: number) {\n\n if (d !== d) { return 0x7E00; } // NaN\n\n f64[0] = d;\n\n // Magic numbers:\n // 0x80000000 = 10000000 00000000 00000000 00000000 -- masks the 32nd bit\n // 0x7ff00000 = 01111111 11110000 00000000 00000000 -- masks the 21st-31st bits\n // 0x000fffff = 00000000 00001111 11111111 11111111 -- masks the 1st-20th bit\n\n let sign = (u32[1] & 0x80000000) >> 16 & 0xFFFF;\n let expo = (u32[1] & 0x7ff00000), sigf = 0x0000;\n\n if (expo >= 0x40f00000) {\n //\n // If exponent overflowed, the float16 is either NaN or Infinity.\n // Rules to propagate the sign bit: mantissa > 0 ? NaN : +/-Infinity\n //\n // Magic numbers:\n // 0x40F00000 = 01000000 11110000 00000000 00000000 -- 6-bit exponent overflow\n // 0x7C000000 = 01111100 00000000 00000000 00000000 -- masks the 27th-31st bits\n //\n // returns:\n // qNaN, aka 32256 decimal, 0x7E00 hex, or 01111110 00000000 binary\n // sNaN, aka 32000 decimal, 0x7D00 hex, or 01111101 00000000 binary\n // +inf, aka 31744 decimal, 0x7C00 hex, or 01111100 00000000 binary\n // -inf, aka 64512 decimal, 0xFC00 hex, or 11111100 00000000 binary\n //\n // If mantissa is greater than 23 bits, set to +Infinity like numpy\n if (u32[0] > 0) {\n expo = 0x7C00;\n } else {\n expo = (expo & 0x7C000000) >> 16;\n sigf = (u32[1] & 0x000fffff) >> 10;\n }\n } else if (expo <= 0x3f000000) {\n //\n // If exponent underflowed, the float is either signed zero or subnormal.\n //\n // Magic numbers:\n // 0x3F000000 = 00111111 00000000 00000000 00000000 -- 6-bit exponent underflow\n //\n sigf = 0x100000 + (u32[1] & 0x000fffff);\n sigf = 0x100000 + (sigf << ((expo >> 20) - 998)) >> 21;\n expo = 0;\n } else {\n //\n // No overflow or underflow, rebase the exponent and round the mantissa\n // Magic numbers:\n // 0x200 = 00000010 00000000 -- masks off the 10th bit\n //\n\n // Ensure the first mantissa bit (the 10th one) is 1 and round\n expo = (expo - 0x3f000000) >> 10;\n sigf = ((u32[1] & 0x000fffff) + 0x200) >> 10;\n }\n\n return sign | expo | sigf & 0xFFFF;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { float64ToUint16 } from '../util/math';\nimport { FixedWidthBuilder } from '../builder';\nimport { Float, Float16, Float32, Float64 } from '../type';\n\n/** @ignore */\nexport class FloatBuilder extends FixedWidthBuilder {}\n\n/** @ignore */\nexport class Float16Builder extends FloatBuilder {\n public setValue(index: number, value: number) {\n // convert JS float64 to a uint16\n this._values.set(index, float64ToUint16(value));\n }\n}\n\n/** @ignore */\nexport class Float32Builder extends FloatBuilder {\n public setValue(index: number, value: number) {\n this._values.set(index, value);\n }\n}\n\n/** @ignore */\nexport class Float64Builder extends FloatBuilder {\n public setValue(index: number, value: number) {\n this._values.set(index, value);\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf\";\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { ArrayBufferViewInput, toArrayBufferView } from './buffer';\nimport { TypedArray, TypedArrayConstructor } from '../interfaces';\nimport { BigIntArray, BigIntArrayConstructor } from '../interfaces';\nimport { BigIntAvailable, BigInt64Array, BigUint64Array } from './compat';\n\n/** @ignore */\nexport const isArrowBigNumSymbol = Symbol.for('isArrowBigNum');\n\n/** @ignore */ type BigNumArray = IntArray | UintArray;\n/** @ignore */ type IntArray = Int8Array | Int16Array | Int32Array;\n/** @ignore */ type UintArray = Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray;\n\n/** @ignore */\nfunction BigNum(this: any, x: any, ...xs: any) {\n if (xs.length === 0) {\n return Object.setPrototypeOf(toArrayBufferView(this['TypedArray'], x), this.constructor.prototype);\n }\n return Object.setPrototypeOf(new this['TypedArray'](x, ...xs), this.constructor.prototype);\n}\n\nBigNum.prototype[isArrowBigNumSymbol] = true;\nBigNum.prototype.toJSON = function>(this: T) { return `\"${bignumToString(this)}\"`; };\nBigNum.prototype.valueOf = function>(this: T) { return bignumToNumber(this); };\nBigNum.prototype.toString = function>(this: T) { return bignumToString(this); };\nBigNum.prototype[Symbol.toPrimitive] = function>(this: T, hint: 'string' | 'number' | 'default' = 'default') {\n switch (hint) {\n case 'number': return bignumToNumber(this);\n case 'string': return bignumToString(this);\n case 'default': return bignumToBigInt(this);\n }\n return bignumToString(this);\n};\n\n/** @ignore */\ntype TypedArrayConstructorArgs =\n [number | void] |\n [Iterable | Iterable] |\n [ArrayBufferLike, number | void, number | void] ;\n\n/** @ignore */\nfunction SignedBigNum(this: any, ...args: TypedArrayConstructorArgs) { return BigNum.apply(this, args); }\n/** @ignore */\nfunction UnsignedBigNum(this: any, ...args: TypedArrayConstructorArgs) { return BigNum.apply(this, args); }\n/** @ignore */\nfunction DecimalBigNum(this: any, ...args: TypedArrayConstructorArgs) { return BigNum.apply(this, args); }\n\nObject.setPrototypeOf(SignedBigNum.prototype, Object.create(Int32Array.prototype));\nObject.setPrototypeOf(UnsignedBigNum.prototype, Object.create(Uint32Array.prototype));\nObject.setPrototypeOf(DecimalBigNum.prototype, Object.create(Uint32Array.prototype));\nObject.assign(SignedBigNum.prototype, BigNum.prototype, { 'constructor': SignedBigNum, 'signed': true, 'TypedArray': Int32Array, 'BigIntArray': BigInt64Array });\nObject.assign(UnsignedBigNum.prototype, BigNum.prototype, { 'constructor': UnsignedBigNum, 'signed': false, 'TypedArray': Uint32Array, 'BigIntArray': BigUint64Array });\nObject.assign(DecimalBigNum.prototype, BigNum.prototype, { 'constructor': DecimalBigNum, 'signed': true, 'TypedArray': Uint32Array, 'BigIntArray': BigUint64Array });\n\n/** @ignore */\nfunction bignumToNumber>(bn: T) {\n let { buffer, byteOffset, length, 'signed': signed } = bn;\n let words = new Int32Array(buffer, byteOffset, length);\n let number = 0, i = 0, n = words.length, hi, lo;\n while (i < n) {\n lo = words[i++];\n hi = words[i++];\n signed || (hi = hi >>> 0);\n number += (lo >>> 0) + (hi * (i ** 32));\n }\n return number;\n}\n\n/** @ignore */\nexport let bignumToString: { >(a: T): string; };\n/** @ignore */\nexport let bignumToBigInt: { >(a: T): bigint; };\n\nif (!BigIntAvailable) {\n bignumToString = decimalToString;\n bignumToBigInt = bignumToString;\n} else {\n bignumToBigInt = (>(a: T) => a.byteLength === 8 ? new a['BigIntArray'](a.buffer, a.byteOffset, 1)[0] : decimalToString(a));\n bignumToString = (>(a: T) => a.byteLength === 8 ? `${new a['BigIntArray'](a.buffer, a.byteOffset, 1)[0]}` : decimalToString(a));\n}\n\n/** @ignore */\nfunction decimalToString>(a: T) {\n let digits = '';\n let base64 = new Uint32Array(2);\n let base32 = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2);\n let checks = new Uint32Array((base32 = new Uint16Array(base32).reverse()).buffer);\n let i = -1, n = base32.length - 1;\n do {\n for (base64[0] = base32[i = 0]; i < n;) {\n base32[i++] = base64[1] = base64[0] / 10;\n base64[0] = ((base64[0] - base64[1] * 10) << 16) + base32[i];\n }\n base32[i] = base64[1] = base64[0] / 10;\n base64[0] = base64[0] - base64[1] * 10;\n digits = `${base64[0]}${digits}`;\n } while (checks[0] || checks[1] || checks[2] || checks[3]);\n return digits ? digits : `0`;\n}\n\n/** @ignore */\nexport class BN {\n /** @nocollapse */\n public static new(num: T, isSigned?: boolean): (T & BN) {\n switch (isSigned) {\n case true: return new ( SignedBigNum)(num) as (T & BN);\n case false: return new ( UnsignedBigNum)(num) as (T & BN);\n }\n switch (num.constructor) {\n case Int8Array:\n case Int16Array:\n case Int32Array:\n case BigInt64Array:\n return new ( SignedBigNum)(num) as (T & BN);\n }\n if (num.byteLength === 16) {\n return new ( DecimalBigNum)(num) as (T & BN);\n }\n return new ( UnsignedBigNum)(num) as (T & BN);\n }\n /** @nocollapse */\n public static signed(num: T): (T & BN) {\n return new ( SignedBigNum)(num) as (T & BN);\n }\n /** @nocollapse */\n public static unsigned(num: T): (T & BN) {\n return new ( UnsignedBigNum)(num) as (T & BN);\n }\n /** @nocollapse */\n public static decimal(num: T): (T & BN) {\n return new ( DecimalBigNum)(num) as (T & BN);\n }\n constructor(num: T, isSigned?: boolean) {\n return BN.new(num, isSigned) as any;\n }\n}\n\n/** @ignore */\nexport interface BN extends TypedArrayLike {\n\n new(buffer: T, signed?: boolean): T;\n\n readonly signed: boolean;\n readonly TypedArray: TypedArrayConstructor;\n readonly BigIntArray: BigIntArrayConstructor;\n\n [Symbol.toStringTag]:\n 'Int8Array' |\n 'Int16Array' |\n 'Int32Array' |\n 'Uint8Array' |\n 'Uint16Array' |\n 'Uint32Array' |\n 'Uint8ClampedArray';\n\n /**\n * Convert the bytes to their (positive) decimal representation for printing\n */\n toString(): string;\n /**\n * Down-convert the bytes to a 53-bit precision integer. Invoked by JS for\n * arithmatic operators, like `+`. Easy (and unsafe) way to convert BN to\n * number via `+bn_inst`\n */\n valueOf(): number;\n /**\n * Return the JSON representation of the bytes. Must be wrapped in double-quotes,\n * so it's compatible with JSON.stringify().\n */\n toJSON(): string;\n [Symbol.toPrimitive](hint?: any): number | string | bigint;\n}\n\n/** @ignore */\ninterface TypedArrayLike {\n\n readonly length: number;\n readonly buffer: ArrayBuffer;\n readonly byteLength: number;\n readonly byteOffset: number;\n readonly BYTES_PER_ELEMENT: number;\n\n includes(searchElement: number, fromIndex?: number | undefined): boolean;\n copyWithin(target: number, start: number, end?: number | undefined): this;\n every(callbackfn: (value: number, index: number, array: T) => boolean, thisArg?: any): boolean;\n fill(value: number, start?: number | undefined, end?: number | undefined): this;\n filter(callbackfn: (value: number, index: number, array: T) => boolean, thisArg?: any): T;\n find(predicate: (value: number, index: number, obj: T) => boolean, thisArg?: any): number | undefined;\n findIndex(predicate: (value: number, index: number, obj: T) => boolean, thisArg?: any): number;\n forEach(callbackfn: (value: number, index: number, array: T) => void, thisArg?: any): void;\n indexOf(searchElement: number, fromIndex?: number | undefined): number;\n join(separator?: string | undefined): string;\n lastIndexOf(searchElement: number, fromIndex?: number | undefined): number;\n map(callbackfn: (value: number, index: number, array: T) => number, thisArg?: any): T;\n reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: T) => number): number;\n reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: T) => number, initialValue: number): number;\n reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: T) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: T) => number): number;\n reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: T) => number, initialValue: number): number;\n reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: T) => U, initialValue: U): U;\n reverse(): T;\n set(array: ArrayLike, offset?: number | undefined): void;\n slice(start?: number | undefined, end?: number | undefined): T;\n some(callbackfn: (value: number, index: number, array: T) => boolean, thisArg?: any): boolean;\n sort(compareFn?: ((a: number, b: number) => number) | undefined): this;\n subarray(begin: number, end?: number | undefined): T;\n toLocaleString(): string;\n entries(): IterableIterator<[number, number]>;\n keys(): IterableIterator;\n values(): IterableIterator;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { bignumToBigInt } from '../util/bn';\nimport { WideBufferBuilder } from './buffer';\nimport { BigInt64Array } from '../util/compat';\nimport { FixedWidthBuilder, BuilderOptions } from '../builder';\nimport { Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64 } from '../type';\n\n/** @ignore */\nexport class IntBuilder extends FixedWidthBuilder {\n public setValue(index: number, value: T['TValue']) {\n this._values.set(index, value);\n }\n}\n\n/** @ignore */\nexport class Int8Builder extends IntBuilder {}\n/** @ignore */\nexport class Int16Builder extends IntBuilder {}\n/** @ignore */\nexport class Int32Builder extends IntBuilder {}\n/** @ignore */\nexport class Int64Builder extends IntBuilder {\n protected _values: WideBufferBuilder;\n constructor(options: BuilderOptions) {\n if (options['nullValues']) {\n options['nullValues'] = (options['nullValues'] as TNull[]).map(toBigInt);\n }\n super(options);\n this._values = new WideBufferBuilder(new Int32Array(0), 2);\n }\n public get values64() { return this._values.buffer64; }\n public isValid(value: Int32Array | bigint | TNull) { return super.isValid(toBigInt(value)); }\n}\n\n/** @ignore */\nexport class Uint8Builder extends IntBuilder {}\n/** @ignore */\nexport class Uint16Builder extends IntBuilder {}\n/** @ignore */\nexport class Uint32Builder extends IntBuilder {}\n/** @ignore */\nexport class Uint64Builder extends IntBuilder {\n protected _values: WideBufferBuilder;\n constructor(options: BuilderOptions) {\n if (options['nullValues']) {\n options['nullValues'] = (options['nullValues'] as TNull[]).map(toBigInt);\n }\n super(options);\n this._values = new WideBufferBuilder(new Uint32Array(0), 2);\n }\n public get values64() { return this._values.buffer64; }\n public isValid(value: Uint32Array | bigint | TNull) { return super.isValid(toBigInt(value)); }\n}\n\nconst toBigInt = ((memo: any) => (value: any) => {\n if (ArrayBuffer.isView(value)) {\n memo.buffer = value.buffer;\n memo.byteOffset = value.byteOffset;\n memo.byteLength = value.byteLength;\n value = bignumToBigInt(memo);\n memo.buffer = null;\n }\n return value;\n})({ 'BigIntArray': BigInt64Array });\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FixedWidthBuilder } from '../builder';\nimport { Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond } from '../type';\n\n/** @ignore */\nexport class TimeBuilder extends FixedWidthBuilder {}\n/** @ignore */\nexport class TimeSecondBuilder extends TimeBuilder {}\n/** @ignore */\nexport class TimeMillisecondBuilder extends TimeBuilder {}\n/** @ignore */\nexport class TimeMicrosecondBuilder extends TimeBuilder {}\n/** @ignore */\nexport class TimeNanosecondBuilder extends TimeBuilder {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FixedWidthBuilder } from '../builder';\nimport { Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond } from '../type';\n\n/** @ignore */\nexport class TimestampBuilder extends FixedWidthBuilder {}\n/** @ignore */\nexport class TimestampSecondBuilder extends TimestampBuilder {}\n/** @ignore */\nexport class TimestampMillisecondBuilder extends TimestampBuilder {}\n/** @ignore */\nexport class TimestampMicrosecondBuilder extends TimestampBuilder {}\n/** @ignore */\nexport class TimestampNanosecondBuilder extends TimestampBuilder {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FixedWidthBuilder } from '../builder';\nimport { Interval, IntervalDayTime, IntervalYearMonth } from '../type';\n\n/** @ignore */\nexport class IntervalBuilder extends FixedWidthBuilder {}\n/** @ignore */\nexport class IntervalDayTimeBuilder extends IntervalBuilder {}\n/** @ignore */\nexport class IntervalYearMonthBuilder extends IntervalBuilder {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Binary } from '../type';\nimport { toUint8Array } from '../util/buffer';\nimport { BufferBuilder } from './buffer';\nimport { VariableWidthBuilder, BuilderOptions } from '../builder';\n\n/** @ignore */\nexport class BinaryBuilder extends VariableWidthBuilder {\n constructor(opts: BuilderOptions) {\n super(opts);\n this._values = new BufferBuilder(new Uint8Array(0));\n }\n public get byteLength(): number {\n let size = this._pendingLength + (this.length * 4);\n this._offsets && (size += this._offsets.byteLength);\n this._values && (size += this._values.byteLength);\n this._nulls && (size += this._nulls.byteLength);\n return size;\n }\n public setValue(index: number, value: Uint8Array) {\n return super.setValue(index, toUint8Array(value));\n }\n protected _flushPending(pending: Map, pendingLength: number) {\n const offsets = this._offsets;\n const data = this._values.reserve(pendingLength).buffer;\n let index = 0, length = 0, offset = 0, value: Uint8Array | undefined;\n for ([index, value] of pending) {\n if (value === undefined) {\n offsets.set(index, 0);\n } else {\n length = value.length;\n data.set(value, offset);\n offsets.set(index, length);\n offset += length;\n }\n }\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Utf8 } from '../type';\nimport { encodeUtf8 } from '../util/utf8';\nimport { BinaryBuilder } from './binary';\nimport { BufferBuilder } from './buffer';\nimport { VariableWidthBuilder, BuilderOptions } from '../builder';\n\n/** @ignore */\nexport class Utf8Builder extends VariableWidthBuilder {\n constructor(opts: BuilderOptions) {\n super(opts);\n this._values = new BufferBuilder(new Uint8Array(0));\n }\n public get byteLength(): number {\n let size = this._pendingLength + (this.length * 4);\n this._offsets && (size += this._offsets.byteLength);\n this._values && (size += this._values.byteLength);\n this._nulls && (size += this._nulls.byteLength);\n return size;\n }\n public setValue(index: number, value: string) {\n return super.setValue(index, encodeUtf8(value) as any);\n }\n // @ts-ignore\n protected _flushPending(pending: Map, pendingLength: number): void {}\n}\n\n(Utf8Builder.prototype as any)._flushPending = (BinaryBuilder.prototype as any)._flushPending;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\n\n/** @ignore */\nexport class Run {\n // @ts-ignore\n protected _values: ArrayLike;\n public get length() { return this._values.length; }\n public get(index: number) { return this._values[index]; }\n public clear() { this._values = null; return this; }\n public bind(values: Vector | ArrayLike) {\n if (values instanceof Vector) {\n return values;\n }\n this._values = values;\n return this as any;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { StructVector } from './struct';\nimport { valueToString } from '../util/pretty';\nimport { DataType, Struct, RowLike } from '../type';\n\n/** @ignore */ const kParent = Symbol.for('parent');\n/** @ignore */ const kRowIndex = Symbol.for('rowIndex');\n/** @ignore */ const kKeyToIdx = Symbol.for('keyToIdx');\n/** @ignore */ const kIdxToVal = Symbol.for('idxToVal');\n/** @ignore */ const kCustomInspect = Symbol.for('nodejs.util.inspect.custom');\n\nabstract class Row implements Map {\n\n public readonly size: number;\n public readonly [Symbol.toStringTag]: string;\n\n protected [kRowIndex]: number;\n protected [kParent]: Vector;\n protected [kKeyToIdx]: Map;\n protected [kIdxToVal]: V[];\n\n constructor(parent: Vector, numKeys: number) {\n this[kParent] = parent;\n this.size = numKeys;\n }\n\n public abstract keys(): IterableIterator;\n public abstract values(): IterableIterator;\n public abstract getKey(idx: number): K;\n public abstract getIndex(key: K): number;\n public abstract getValue(idx: number): V;\n public abstract setValue(idx: number, val: V): void;\n\n public entries() { return this[Symbol.iterator](); }\n\n public has(key: K) { return this.get(key) !== undefined; }\n\n public get(key: K) {\n let val = undefined;\n if (key !== null && key !== undefined) {\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n let idx = ktoi.get(key);\n if (idx !== undefined) {\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n ((val = itov[idx]) !== undefined) || (itov[idx] = val = this.getValue(idx));\n } else if ((idx = this.getIndex(key)) > -1) {\n ktoi.set(key, idx);\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n ((val = itov[idx]) !== undefined) || (itov[idx] = val = this.getValue(idx));\n }\n }\n return val;\n }\n\n public set(key: K, val: V) {\n if (key !== null && key !== undefined) {\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n let idx = ktoi.get(key);\n if (idx === undefined) {\n ktoi.set(key, idx = this.getIndex(key));\n }\n if (idx > -1) {\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n itov[idx] = this.setValue(idx, val);\n }\n }\n return this;\n }\n\n public clear(): void { throw new Error(`Clearing ${this[Symbol.toStringTag]} not supported.`); }\n\n public delete(_: K): boolean { throw new Error(`Deleting ${this[Symbol.toStringTag]} values not supported.`); }\n\n public *[Symbol.iterator](): IterableIterator<[K, V]> {\n\n const ki = this.keys();\n const vi = this.values();\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n\n for (let k: K, v: V, i = 0, kr: IteratorResult, vr: IteratorResult;\n !((kr = ki.next()).done || (vr = vi.next()).done);\n ++i\n ) {\n k = kr.value;\n v = vr.value;\n itov[i] = v;\n ktoi.has(k) || ktoi.set(k, i);\n yield [k, v];\n }\n }\n\n public forEach(callbackfn: (value: V, key: K, map: Map) => void, thisArg?: any): void {\n\n const ki = this.keys();\n const vi = this.values();\n const callback = thisArg === undefined ? callbackfn :\n (v: V, k: K, m: Map) => callbackfn.call(thisArg, v, k, m);\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n\n for (let k: K, v: V, i = 0, kr: IteratorResult, vr: IteratorResult;\n !((kr = ki.next()).done || (vr = vi.next()).done);\n ++i\n ) {\n k = kr.value;\n v = vr.value;\n itov[i] = v;\n ktoi.has(k) || ktoi.set(k, i);\n callback(v, k, this);\n }\n }\n\n public toArray() { return [...this.values()]; }\n public toJSON() {\n const obj = {} as any;\n this.forEach((val, key) => obj[key] = val);\n return obj;\n }\n\n public inspect() { return this.toString(); }\n public [kCustomInspect]() { return this.toString(); }\n public toString() {\n const str: string[] = [];\n this.forEach((val, key) => {\n key = valueToString(key);\n val = valueToString(val);\n str.push(`${key}: ${val}`);\n });\n return `{ ${str.join(', ')} }`;\n }\n\n protected static [Symbol.toStringTag] = ((proto: Row) => {\n Object.defineProperties(proto, {\n 'size': { writable: true, enumerable: false, configurable: false, value: 0 },\n [kParent]: { writable: true, enumerable: false, configurable: false, value: null },\n [kRowIndex]: { writable: true, enumerable: false, configurable: false, value: -1 },\n });\n return (proto as any)[Symbol.toStringTag] = 'Row';\n })(Row.prototype);\n}\n\nexport class MapRow extends Row {\n constructor(slice: Vector>) {\n super(slice, slice.length);\n return createRowProxy(this);\n }\n public keys() {\n return this[kParent].getChildAt(0)![Symbol.iterator]();\n }\n public values() {\n return this[kParent].getChildAt(1)![Symbol.iterator]();\n }\n public getKey(idx: number): K['TValue'] {\n return this[kParent].getChildAt(0)!.get(idx);\n }\n public getIndex(key: K['TValue']): number {\n return this[kParent].getChildAt(0)!.indexOf(key);\n }\n public getValue(index: number): V['TValue'] | null {\n return this[kParent].getChildAt(1)!.get(index);\n }\n public setValue(index: number, value: V['TValue'] | null): void {\n this[kParent].getChildAt(1)!.set(index, value);\n }\n}\n\nexport class StructRow extends Row {\n constructor(parent: StructVector) {\n super(parent, parent.type.children.length);\n return defineRowProxyProperties(this);\n }\n public *keys() {\n for (const field of this[kParent].type.children) {\n yield field.name as keyof T;\n }\n }\n public *values() {\n for (const field of this[kParent].type.children) {\n yield (this as RowLike)[field.name];\n }\n }\n public getKey(idx: number): keyof T {\n return this[kParent].type.children[idx].name as keyof T;\n }\n public getIndex(key: keyof T): number {\n return this[kParent].type.children.findIndex((f) => f.name === key);\n }\n public getValue(index: number): T[keyof T]['TValue'] | null {\n return this[kParent].getChildAt(index)!.get(this[kRowIndex]);\n }\n public setValue(index: number, value: T[keyof T]['TValue'] | null): void {\n return this[kParent].getChildAt(index)!.set(this[kRowIndex], value);\n }\n}\n\nObject.setPrototypeOf(Row.prototype, Map.prototype);\n\n/** @ignore */\nconst defineRowProxyProperties = (() => {\n const desc = { enumerable: true, configurable: false, get: null as any, set: null as any };\n return (row: T) => {\n let idx = -1, ktoi = row[kKeyToIdx] || (row[kKeyToIdx] = new Map());\n const getter = (key: any) => function(this: T) { return this.get(key); };\n const setter = (key: any) => function(this: T, val: any) { return this.set(key, val); };\n for (const key of row.keys()) {\n ktoi.set(key, ++idx);\n desc.get = getter(key);\n desc.set = setter(key);\n row.hasOwnProperty(key) || (desc.enumerable = true, Object.defineProperty(row, key, desc));\n row.hasOwnProperty(idx) || (desc.enumerable = false, Object.defineProperty(row, idx, desc));\n }\n desc.get = desc.set = null;\n return row;\n };\n})();\n\n/** @ignore */\nconst createRowProxy = (() => {\n if (typeof Proxy === 'undefined') {\n return defineRowProxyProperties;\n }\n const has = Row.prototype.has;\n const get = Row.prototype.get;\n const set = Row.prototype.set;\n const getKey = Row.prototype.getKey;\n const RowProxyHandler: ProxyHandler = {\n isExtensible() { return false; },\n deleteProperty() { return false; },\n preventExtensions() { return true; },\n ownKeys(row: Row) { return [...row.keys()].map((x) => `${x}`); },\n has(row: Row, key: PropertyKey) {\n switch (key) {\n case 'getKey': case 'getIndex': case 'getValue': case 'setValue': case 'toArray': case 'toJSON': case 'inspect':\n case 'constructor': case 'isPrototypeOf': case 'propertyIsEnumerable': case 'toString': case 'toLocaleString': case 'valueOf':\n case 'size': case 'has': case 'get': case 'set': case 'clear': case 'delete': case 'keys': case 'values': case 'entries': case 'forEach':\n case '__proto__': case '__defineGetter__': case '__defineSetter__': case 'hasOwnProperty': case '__lookupGetter__': case '__lookupSetter__':\n case Symbol.iterator: case Symbol.toStringTag: case kParent: case kRowIndex: case kIdxToVal: case kKeyToIdx: case kCustomInspect:\n return true;\n }\n if (typeof key === 'number' && !row.has(key)) {\n key = row.getKey(key);\n }\n return row.has(key);\n },\n get(row: Row, key: PropertyKey, receiver: any) {\n switch (key) {\n case 'getKey': case 'getIndex': case 'getValue': case 'setValue': case 'toArray': case 'toJSON': case 'inspect':\n case 'constructor': case 'isPrototypeOf': case 'propertyIsEnumerable': case 'toString': case 'toLocaleString': case 'valueOf':\n case 'size': case 'has': case 'get': case 'set': case 'clear': case 'delete': case 'keys': case 'values': case 'entries': case 'forEach':\n case '__proto__': case '__defineGetter__': case '__defineSetter__': case 'hasOwnProperty': case '__lookupGetter__': case '__lookupSetter__':\n case Symbol.iterator: case Symbol.toStringTag: case kParent: case kRowIndex: case kIdxToVal: case kKeyToIdx: case kCustomInspect:\n return Reflect.get(row, key, receiver);\n }\n if (typeof key === 'number' && !has.call(receiver, key)) {\n key = getKey.call(receiver, key);\n }\n return get.call(receiver, key);\n },\n set(row: Row, key: PropertyKey, val: any, receiver: any) {\n switch (key) {\n case kParent: case kRowIndex: case kIdxToVal: case kKeyToIdx:\n return Reflect.set(row, key, val, receiver);\n case 'getKey': case 'getIndex': case 'getValue': case 'setValue': case 'toArray': case 'toJSON': case 'inspect':\n case 'constructor': case 'isPrototypeOf': case 'propertyIsEnumerable': case 'toString': case 'toLocaleString': case 'valueOf':\n case 'size': case 'has': case 'get': case 'set': case 'clear': case 'delete': case 'keys': case 'values': case 'entries': case 'forEach':\n case '__proto__': case '__defineGetter__': case '__defineSetter__': case 'hasOwnProperty': case '__lookupGetter__': case '__lookupSetter__':\n case Symbol.iterator: case Symbol.toStringTag:\n return false;\n }\n if (typeof key === 'number' && !has.call(receiver, key)) {\n key = getKey.call(receiver, key);\n }\n return has.call(receiver, key) ? !!set.call(receiver, key, val) : false;\n },\n };\n return (row: T) => new Proxy(row, RowProxyHandler) as T;\n})();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { MapRow, StructRow } from '../vector/row';\nimport { compareArrayLike } from '../util/buffer';\nimport { BigInt, BigIntAvailable } from './compat';\n\n/** @ignore */\ntype RangeLike = { length: number; stride?: number };\n/** @ignore */\ntype ClampThen = (source: T, index: number) => any;\n/** @ignore */\ntype ClampRangeThen = (source: T, offset: number, length: number) => any;\n\nexport function clampIndex(source: T, index: number): number;\nexport function clampIndex = ClampThen>(source: T, index: number, then: N): ReturnType;\n/** @ignore */\nexport function clampIndex = ClampThen>(source: T, index: number, then?: N) {\n const length = source.length;\n const adjust = index > -1 ? index : (length + (index % length));\n return then ? then(source, adjust) : adjust;\n}\n\n/** @ignore */\nlet tmp: number;\nexport function clampRange(source: T, begin: number | undefined, end: number | undefined): [number, number];\nexport function clampRange = ClampRangeThen>(source: T, begin: number | undefined, end: number | undefined, then: N): ReturnType;\n/** @ignore */\nexport function clampRange = ClampRangeThen>(source: T, begin: number | undefined, end: number | undefined, then?: N) {\n\n // Adjust args similar to Array.prototype.slice. Normalize begin/end to\n // clamp between 0 and length, and wrap around on negative indices, e.g.\n // slice(-1, 5) or slice(5, -1)\n let { length: len = 0 } = source;\n let lhs = typeof begin !== 'number' ? 0 : begin;\n let rhs = typeof end !== 'number' ? len : end;\n // wrap around on negative start/end positions\n (lhs < 0) && (lhs = ((lhs % len) + len) % len);\n (rhs < 0) && (rhs = ((rhs % len) + len) % len);\n // ensure lhs <= rhs\n (rhs < lhs) && (tmp = lhs, lhs = rhs, rhs = tmp);\n // ensure rhs <= length\n (rhs > len) && (rhs = len);\n\n return then ? then(source, lhs, rhs) : [lhs, rhs];\n}\n\nconst big0 = BigIntAvailable ? BigInt(0) : 0;\nconst isNaNFast = (value: any) => value !== value;\n\n/** @ignore */\nexport function createElementComparator(search: any) {\n let typeofSearch = typeof search;\n // Compare primitives\n if (typeofSearch !== 'object' || search === null) {\n // Compare NaN\n if (isNaNFast(search)) {\n return isNaNFast;\n }\n return typeofSearch !== 'bigint'\n ? (value: any) => value === search\n : (value: any) => (big0 + value) === search;\n }\n // Compare Dates\n if (search instanceof Date) {\n const valueOfSearch = search.valueOf();\n return (value: any) => value instanceof Date ? (value.valueOf() === valueOfSearch) : false;\n }\n // Compare TypedArrays\n if (ArrayBuffer.isView(search)) {\n return (value: any) => value ? compareArrayLike(search, value) : false;\n }\n // Compare Maps and Rows\n if (search instanceof Map) { return creatMapComparator(search); }\n // Compare Array-likes\n if (Array.isArray(search)) { return createArrayLikeComparator(search); }\n // Compare Vectors\n if (search instanceof Vector) { return createVectorComparator(search); }\n // Compare non-empty Objects\n return createObjectComparator(search);\n}\n\n/** @ignore */\nfunction createArrayLikeComparator(lhs: ArrayLike) {\n const comparitors = [] as ((x: any) => boolean)[];\n for (let i = -1, n = lhs.length; ++i < n;) {\n comparitors[i] = createElementComparator(lhs[i]);\n }\n return createSubElementsComparator(comparitors);\n}\n\n/** @ignore */\nfunction creatMapComparator(lhs: Map) {\n let i = -1;\n const comparitors = [] as ((x: any) => boolean)[];\n lhs.forEach((v) => comparitors[++i] = createElementComparator(v));\n return createSubElementsComparator(comparitors);\n}\n\n/** @ignore */\nfunction createVectorComparator(lhs: Vector) {\n const comparitors = [] as ((x: any) => boolean)[];\n for (let i = -1, n = lhs.length; ++i < n;) {\n comparitors[i] = createElementComparator(lhs.get(i));\n }\n return createSubElementsComparator(comparitors);\n}\n\n/** @ignore */\nfunction createObjectComparator(lhs: any) {\n const keys = Object.keys(lhs);\n // Only compare non-empty Objects\n if (keys.length === 0) { return () => false; }\n const comparitors = [] as ((x: any) => boolean)[];\n for (let i = -1, n = keys.length; ++i < n;) {\n comparitors[i] = createElementComparator(lhs[keys[i]]);\n }\n return createSubElementsComparator(comparitors, keys);\n}\n\nfunction createSubElementsComparator(comparitors: ((x: any) => boolean)[], keys?: Iterable) {\n return (rhs: any) => {\n if (!rhs || typeof rhs !== 'object') {\n return false;\n }\n switch (rhs.constructor) {\n case Array: return compareArray(comparitors, rhs);\n case Map:\n case MapRow:\n case StructRow:\n return compareObject(comparitors, rhs, rhs.keys());\n case Object:\n case undefined: // support `Object.create(null)` objects\n return compareObject(comparitors, rhs, keys || Object.keys(rhs));\n }\n return rhs instanceof Vector ? compareVector(comparitors, rhs) : false;\n };\n}\n\nfunction compareArray(comparitors: ((x: any) => boolean)[], arr: any[]) {\n const n = comparitors.length;\n if (arr.length !== n) { return false; }\n for (let i = -1; ++i < n;) {\n if (!(comparitors[i](arr[i]))) { return false; }\n }\n return true;\n}\n\nfunction compareVector(comparitors: ((x: any) => boolean)[], vec: Vector) {\n const n = comparitors.length;\n if (vec.length !== n) { return false; }\n for (let i = -1; ++i < n;) {\n if (!(comparitors[i](vec.get(i)))) { return false; }\n }\n return true;\n}\n\nfunction compareObject(comparitors: ((x: any) => boolean)[], obj: Map, keys: Iterable) {\n\n const lKeyItr = keys[Symbol.iterator]();\n const rKeyItr = obj instanceof Map ? obj.keys() : Object.keys(obj)[Symbol.iterator]();\n const rValItr = obj instanceof Map ? obj.values() : Object.values(obj)[Symbol.iterator]();\n\n let i = 0;\n let n = comparitors.length;\n let rVal = rValItr.next();\n let lKey = lKeyItr.next();\n let rKey = rKeyItr.next();\n\n for (; i < n && !lKey.done && !rKey.done && !rVal.done;\n ++i, lKey = lKeyItr.next(), rKey = rKeyItr.next(), rVal = rValItr.next()) {\n if (lKey.value !== rKey.value || !comparitors[i](rVal.value)) {\n break;\n }\n }\n if (i === n && lKey.done && rKey.done && rVal.done) {\n return true;\n }\n lKeyItr.return && lKeyItr.return();\n rKeyItr.return && rKeyItr.return();\n rValItr.return && rValItr.return();\n return false;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Field } from '../schema';\nimport { clampRange } from '../util/vector';\nimport { DataType, Dictionary } from '../type';\nimport { selectChunkArgs } from '../util/args';\nimport { DictionaryVector } from './dictionary';\nimport { AbstractVector, Vector } from '../vector';\nimport { Clonable, Sliceable, Applicative } from '../vector';\n\n/** @ignore */\ntype ChunkedDict = T extends Dictionary ? Vector : null | never;\n/** @ignore */\ntype ChunkedKeys = T extends Dictionary ? Vector | Chunked : null | never;\n\n/** @ignore */\nexport type SearchContinuation = (column: T, chunkIndex: number, valueIndex: number) => any;\n\n/** @ignore */\nexport class Chunked\n extends AbstractVector\n implements Clonable>,\n Sliceable>,\n Applicative> {\n\n /** @nocollapse */\n public static flatten(...vectors: (Vector | Vector[])[]) {\n return selectChunkArgs>(Vector, vectors);\n }\n\n /** @nocollapse */\n public static concat(...vectors: (Vector | Vector[])[]) {\n const chunks = Chunked.flatten(...vectors);\n return new Chunked(chunks[0].type, chunks);\n }\n\n protected _type: T;\n protected _length: number;\n protected _chunks: Vector[];\n protected _numChildren: number;\n protected _children?: Chunked[];\n protected _nullCount: number = -1;\n protected _chunkOffsets: Uint32Array;\n\n constructor(type: T, chunks: Vector[] = [], offsets = calculateOffsets(chunks)) {\n super();\n this._type = type;\n this._chunks = chunks;\n this._chunkOffsets = offsets;\n this._length = offsets[offsets.length - 1];\n this._numChildren = (this._type.children || []).length;\n }\n\n public get type() { return this._type; }\n public get length() { return this._length; }\n public get chunks() { return this._chunks; }\n public get typeId(): T['TType'] { return this._type.typeId; }\n public get VectorName() { return `Chunked<${this._type}>`; }\n public get data(): Data {\n return this._chunks[0] ? this._chunks[0].data : null;\n }\n\n public get ArrayType() { return this._type.ArrayType; }\n public get numChildren() { return this._numChildren; }\n public get stride() { return this._chunks[0] ? this._chunks[0].stride : 1; }\n public get byteLength(): number {\n return this._chunks.reduce((byteLength, chunk) => byteLength + chunk.byteLength, 0);\n }\n public get nullCount() {\n let nullCount = this._nullCount;\n if (nullCount < 0) {\n this._nullCount = nullCount = this._chunks.reduce((x, { nullCount }) => x + nullCount, 0);\n }\n return nullCount;\n }\n\n protected _indices?: ChunkedKeys;\n public get indices(): ChunkedKeys | null {\n if (DataType.isDictionary(this._type)) {\n if (!this._indices) {\n const chunks = ( this._chunks) as DictionaryVector[];\n this._indices = (chunks.length === 1\n ? chunks[0].indices\n : Chunked.concat(...chunks.map((x) => x.indices))) as ChunkedKeys;\n }\n return this._indices;\n }\n return null;\n }\n public get dictionary(): ChunkedDict | null {\n if (DataType.isDictionary(this._type)) {\n return this._chunks[this._chunks.length - 1].data.dictionary as ChunkedDict;\n }\n return null;\n }\n\n public *[Symbol.iterator](): IterableIterator {\n for (const chunk of this._chunks) {\n yield* chunk;\n }\n }\n\n public clone(chunks = this._chunks): Chunked {\n return new Chunked(this._type, chunks);\n }\n\n public concat(...others: Vector[]): Chunked {\n return this.clone(Chunked.flatten(this, ...others));\n }\n\n public slice(begin?: number, end?: number): Chunked {\n return clampRange(this, begin, end, this._sliceInternal);\n }\n\n public getChildAt(index: number): Chunked | null {\n\n if (index < 0 || index >= this._numChildren) { return null; }\n\n let columns = this._children || (this._children = []);\n let child: Chunked, field: Field, chunks: Vector[];\n\n if (child = columns[index]) { return child; }\n if (field = ((this._type.children || [])[index] as Field)) {\n chunks = this._chunks\n .map((vector) => vector.getChildAt(index))\n .filter((vec): vec is Vector => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Chunked(field.type, chunks));\n }\n }\n\n return null;\n }\n\n public search(index: number): [number, number] | null;\n public search>>(index: number, then?: N): ReturnType;\n public search>>(index: number, then?: N) {\n let idx = index;\n // binary search to find the child vector and value indices\n let offsets = this._chunkOffsets, rhs = offsets.length - 1;\n // return early if out of bounds, or if there's just one child\n if (idx < 0 ) { return null; }\n if (idx >= offsets[rhs]) { return null; }\n if (rhs <= 1 ) { return then ? then(this, 0, idx) : [0, idx]; }\n let lhs = 0, pos = 0, mid = 0;\n do {\n if (lhs + 1 === rhs) {\n return then ? then(this, lhs, idx - pos) : [lhs, idx - pos];\n }\n mid = lhs + ((rhs - lhs) / 2) | 0;\n idx >= offsets[mid] ? (lhs = mid) : (rhs = mid);\n } while (idx < offsets[rhs] && idx >= (pos = offsets[lhs]));\n return null;\n }\n\n public isValid(index: number): boolean {\n return !!this.search(index, this.isValidInternal);\n }\n\n public get(index: number): T['TValue'] | null {\n return this.search(index, this.getInternal);\n }\n\n public set(index: number, value: T['TValue'] | null): void {\n this.search(index, ({ chunks }, i, j) => chunks[i].set(j, value));\n }\n\n public indexOf(element: T['TValue'], offset?: number): number {\n if (offset && typeof offset === 'number') {\n return this.search(offset, (self, i, j) => this.indexOfInternal(self, i, j, element))!;\n }\n return this.indexOfInternal(this, 0, Math.max(0, offset || 0), element);\n }\n\n public toArray(): T['TArray'] {\n const { chunks } = this;\n const n = chunks.length;\n let ArrayType: any = this._type.ArrayType;\n if (n <= 0) { return new ArrayType(0); }\n if (n <= 1) { return chunks[0].toArray(); }\n let len = 0, src = new Array(n);\n for (let i = -1; ++i < n;) {\n len += (src[i] = chunks[i].toArray()).length;\n }\n if (ArrayType !== src[0].constructor) {\n ArrayType = src[0].constructor;\n }\n let dst = new ArrayType(len);\n let set: any = ArrayType === Array ? arraySet : typedSet;\n for (let i = -1, idx = 0; ++i < n;) {\n idx = set(src[i], dst, idx);\n }\n return dst;\n }\n\n protected getInternal({ _chunks }: Chunked, i: number, j: number) { return _chunks[i].get(j); }\n protected isValidInternal({ _chunks }: Chunked, i: number, j: number) { return _chunks[i].isValid(j); }\n protected indexOfInternal({ _chunks }: Chunked, chunkIndex: number, fromIndex: number, element: T['TValue']) {\n let i = chunkIndex - 1, n = _chunks.length;\n let start = fromIndex, offset = 0, found = -1;\n while (++i < n) {\n if (~(found = _chunks[i].indexOf(element, start))) {\n return offset + found;\n }\n start = 0;\n offset += _chunks[i].length;\n }\n return -1;\n }\n\n protected _sliceInternal(self: Chunked, begin: number, end: number) {\n const slices: Vector[] = [];\n const { chunks, _chunkOffsets: chunkOffsets } = self;\n for (let i = -1, n = chunks.length; ++i < n;) {\n const chunk = chunks[i];\n const chunkLength = chunk.length;\n const chunkOffset = chunkOffsets[i];\n // If the child is to the right of the slice boundary, we can stop\n if (chunkOffset >= end) { break; }\n // If the child is to the left of of the slice boundary, exclude\n if (begin >= chunkOffset + chunkLength) { continue; }\n // If the child is between both left and right boundaries, include w/o slicing\n if (chunkOffset >= begin && (chunkOffset + chunkLength) <= end) {\n slices.push(chunk);\n continue;\n }\n // If the child overlaps one of the slice boundaries, include that slice\n const from = Math.max(0, begin - chunkOffset);\n const to = Math.min(end - chunkOffset, chunkLength);\n slices.push(chunk.slice(from, to) as Vector);\n }\n return self.clone(slices);\n }\n}\n\n/** @ignore */\nfunction calculateOffsets(vectors: Vector[]) {\n let offsets = new Uint32Array((vectors || []).length + 1);\n let offset = offsets[0] = 0, length = offsets.length;\n for (let index = 0; ++index < length;) {\n offsets[index] = (offset += vectors[index - 1].length);\n }\n return offsets;\n}\n\n/** @ignore */\nconst typedSet = (src: TypedArray, dst: TypedArray, offset: number) => {\n dst.set(src, offset);\n return (offset + src.length);\n};\n\n/** @ignore */\nconst arraySet = (src: any[], dst: any[], offset: number) => {\n let idx = offset;\n for (let i = -1, n = src.length; ++i < n;) {\n dst[idx++] = src[i];\n }\n return idx;\n};\n\n/** @ignore */\ninterface TypedArray extends ArrayBufferView {\n readonly length: number;\n readonly [n: number]: number;\n set(array: ArrayLike, offset?: number): void;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { Field } from './schema';\nimport { DataType } from './type';\nimport { Vector } from './vector';\nimport { Clonable, Sliceable, Applicative } from './vector';\nimport { VectorCtorArgs, VectorType as V } from './interfaces';\nimport { Chunked, SearchContinuation } from './vector/chunked';\n\nexport interface Column {\n typeId: T['TType'];\n concat(...others: Vector[]): Column;\n slice(begin?: number, end?: number): Column;\n clone(chunks?: Vector[], offsets?: Uint32Array): Column;\n}\n\nexport class Column\n extends Chunked\n implements Clonable>,\n Sliceable>,\n Applicative> {\n\n public static new(field: string | Field, ...chunks: (Vector | Vector[])[]): Column;\n public static new(field: string | Field, data: Data, ...args: VectorCtorArgs>): Column;\n /** @nocollapse */\n public static new(field: string | Field, data: Data | Vector | (Data | Vector)[], ...rest: any[]) {\n\n const chunks = Chunked.flatten(\n Array.isArray(data) ? [...data, ...rest] :\n data instanceof Vector ? [data, ...rest] :\n [Vector.new(data, ...rest)]\n );\n\n if (typeof field === 'string') {\n const type = chunks[0].data.type;\n field = new Field(field, type, true);\n } else if (!field.nullable && chunks.some(({ nullCount }) => nullCount > 0)) {\n field = field.clone({ nullable: true });\n }\n return new Column(field, chunks);\n }\n\n constructor(field: Field, vectors: Vector[] = [], offsets?: Uint32Array) {\n vectors = Chunked.flatten(...vectors);\n super(field.type, vectors, offsets);\n this._field = field;\n if (vectors.length === 1 && !(this instanceof SingleChunkColumn)) {\n return new SingleChunkColumn(field, vectors[0], this._chunkOffsets);\n }\n }\n\n protected _field: Field;\n protected _children?: Column[];\n\n public get field() { return this._field; }\n public get name() { return this._field.name; }\n public get nullable() { return this._field.nullable; }\n public get metadata() { return this._field.metadata; }\n\n public clone(chunks = this._chunks) {\n return new Column(this._field, chunks);\n }\n\n public getChildAt(index: number): Column | null {\n\n if (index < 0 || index >= this.numChildren) { return null; }\n\n let columns = this._children || (this._children = []);\n let column: Column, field: Field, chunks: Vector[];\n\n if (column = columns[index]) { return column; }\n if (field = ((this.type.children || [])[index] as Field)) {\n chunks = this._chunks\n .map((vector) => vector.getChildAt(index))\n .filter((vec): vec is Vector => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Column(field, chunks));\n }\n }\n\n return null;\n }\n}\n\n/** @ignore */\nclass SingleChunkColumn extends Column {\n protected _chunk: Vector;\n constructor(field: Field, vector: Vector, offsets?: Uint32Array) {\n super(field, [vector], offsets);\n this._chunk = vector;\n }\n public search(index: number): [number, number] | null;\n public search>>(index: number, then?: N): ReturnType;\n public search>>(index: number, then?: N) {\n return then ? then(this, 0, index) : [0, index];\n }\n public isValid(index: number): boolean {\n return this._chunk.isValid(index);\n }\n public get(index: number): T['TValue'] | null {\n return this._chunk.get(index);\n }\n public set(index: number, value: T['TValue'] | null): void {\n this._chunk.set(index, value);\n }\n public indexOf(element: T['TValue'], offset?: number): number {\n return this._chunk.indexOf(element, offset);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Field } from '../schema';\nimport { Column } from '../column';\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\nimport { Chunked } from '../vector/chunked';\n\ntype RecordBatchCtor = typeof import('../recordbatch').RecordBatch;\n\nconst isArray = Array.isArray;\n\n/** @ignore */\nexport const selectArgs = (Ctor: any, vals: any[]) => _selectArgs(Ctor, vals, [], 0) as T[];\n/** @ignore */\nexport const selectColumnArgs = (args: any[]) => {\n const [fields, values] = _selectFieldArgs(args, [[], []]);\n return values.map((x, i) =>\n x instanceof Column ? Column.new(x.field.clone(fields[i]), x) :\n x instanceof Vector ? Column.new(fields[i], x) as Column :\n Column.new(fields[i], [] as Vector[]));\n};\n\n/** @ignore */\nexport const selectFieldArgs = (args: any[]) => _selectFieldArgs(args, [[], []]);\n/** @ignore */\nexport const selectChunkArgs = (Ctor: any, vals: any[]) => _selectChunkArgs(Ctor, vals, [], 0) as T[];\n/** @ignore */\nexport const selectVectorChildrenArgs = (Ctor: RecordBatchCtor, vals: any[]) => _selectVectorChildrenArgs(Ctor, vals, [], 0) as T[];\n/** @ignore */\nexport const selectColumnChildrenArgs = (Ctor: RecordBatchCtor, vals: any[]) => _selectColumnChildrenArgs(Ctor, vals, [], 0) as T[];\n\n/** @ignore */\nfunction _selectArgs(Ctor: any, vals: any[], res: T[], idx: number) {\n let value: any, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectArgs(Ctor, value, res, j).length;\n } else if (value instanceof Ctor) { res[j++] = value; }\n }\n return res;\n}\n\n/** @ignore */\nfunction _selectChunkArgs(Ctor: any, vals: any[], res: T[], idx: number) {\n let value: any, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectChunkArgs(Ctor, value, res, j).length;\n } else if (value instanceof Chunked) {\n j = _selectChunkArgs(Ctor, value.chunks, res, j).length;\n } else if (value instanceof Ctor) { res[j++] = value; }\n }\n return res;\n}\n\n/** @ignore */\nfunction _selectVectorChildrenArgs(Ctor: RecordBatchCtor, vals: any[], res: T[], idx: number) {\n let value: any, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectVectorChildrenArgs(Ctor, value, res, j).length;\n } else if (value instanceof Ctor) {\n j = _selectArgs(Vector, value.schema.fields.map((_, i) => value.getChildAt(i)!), res, j).length;\n } else if (value instanceof Vector) { res[j++] = value as T; }\n }\n return res;\n}\n\n/** @ignore */\nfunction _selectColumnChildrenArgs(Ctor: RecordBatchCtor, vals: any[], res: T[], idx: number) {\n let value: any, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectColumnChildrenArgs(Ctor, value, res, j).length;\n } else if (value instanceof Ctor) {\n j = _selectArgs(Column, value.schema.fields.map((f, i) => Column.new(f, value.getChildAt(i)!)), res, j).length;\n } else if (value instanceof Column) { res[j++] = value as T; }\n }\n return res;\n}\n\n/** @ignore */\nconst toKeysAndValues = (xs: [any[], any[]], [k, v]: [any, any], i: number) => (xs[0][i] = k, xs[1][i] = v, xs);\n\n/** @ignore */\nfunction _selectFieldArgs(vals: any[], ret: [Field[], Vector[]]): [Field[], (T[keyof T] | Vector)[]] {\n let keys: any[], n: number;\n switch (n = vals.length) {\n case 0: return ret;\n case 1:\n keys = ret[0];\n if (!(vals[0])) { return ret; }\n if (isArray(vals[0])) { return _selectFieldArgs(vals[0], ret); }\n if (!(vals[0] instanceof Data || vals[0] instanceof Vector || vals[0] instanceof DataType)) {\n [keys, vals] = Object.entries(vals[0]).reduce(toKeysAndValues, ret);\n }\n break;\n default:\n !isArray(keys = vals[n - 1])\n ? (vals = isArray(vals[0]) ? vals[0] : vals, keys = [])\n : (vals = isArray(vals[0]) ? vals[0] : vals.slice(0, n - 1));\n }\n\n let fieldIndex = -1;\n let valueIndex = -1;\n let idx = -1, len = vals.length;\n let field: number | string | Field;\n let val: Vector | Data;\n let [fields, values] = ret as [Field[], any[]];\n\n while (++idx < len) {\n val = vals[idx];\n if (val instanceof Column && (values[++valueIndex] = val)) {\n fields[++fieldIndex] = val.field.clone(keys[idx], val.type, true);\n } else {\n ({ [idx]: field = idx } = keys);\n if (val instanceof DataType && (values[++valueIndex] = val)) {\n fields[++fieldIndex] = Field.new(field, val as DataType, true) as Field;\n } else if (val && val.type && (values[++valueIndex] = val)) {\n val instanceof Data && (values[valueIndex] = val = Vector.new(val) as Vector);\n fields[++fieldIndex] = Field.new(field, val.type, true) as Field;\n }\n }\n }\n return ret;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { Vector } from './vector';\nimport { DataType } from './type';\nimport { selectArgs } from './util/args';\nimport { selectFieldArgs } from './util/args';\nimport { instance as comparer } from './visitor/typecomparator';\n\ntype VectorMap = { [key: string]: Vector };\ntype Fields = (keyof T)[] | Field[];\ntype ChildData = T[keyof T][] | Data[] | Vector[];\n\nexport class Schema {\n\n public static from(children: T): Schema;\n public static from(children: T): Schema<{ [P in keyof T]: T[P]['type'] }>;\n public static from(children: ChildData, fields?: Fields): Schema;\n /** @nocollapse */\n public static from(...args: any[]) {\n return Schema.new(args[0], args[1]);\n }\n\n public static new(children: T): Schema;\n public static new(children: T): Schema<{ [P in keyof T]: T[P]['type'] }>;\n public static new(children: ChildData, fields?: Fields): Schema;\n /** @nocollapse */\n public static new(...args: any[]) {\n return new Schema(selectFieldArgs(args)[0]);\n }\n\n public readonly fields: Field[];\n public readonly metadata: Map;\n public readonly dictionaries: Map;\n\n constructor(fields: Field[] = [],\n metadata?: Map | null,\n dictionaries?: Map | null) {\n this.fields = (fields || []) as Field[];\n this.metadata = metadata || new Map();\n if (!dictionaries) {\n dictionaries = generateDictionaryMap(fields);\n }\n this.dictionaries = dictionaries;\n }\n public get [Symbol.toStringTag]() { return 'Schema'; }\n public toString() {\n return `Schema<{ ${this.fields.map((f, i) => `${i}: ${f}`).join(', ')} }>`;\n }\n\n public compareTo(other?: Schema | null): other is Schema {\n return comparer.compareSchemas(this, other);\n }\n\n public select(...columnNames: K[]) {\n const names = columnNames.reduce((xs, x) => (xs[x] = true) && xs, Object.create(null));\n return new Schema<{ [P in K]: T[P] }>(this.fields.filter((f) => names[f.name]), this.metadata);\n }\n public selectAt(...columnIndices: number[]) {\n return new Schema<{ [key: string]: K }>(columnIndices.map((i) => this.fields[i]).filter(Boolean), this.metadata);\n }\n\n public assign(schema: Schema): Schema;\n public assign(...fields: (Field | Field[])[]): Schema;\n public assign(...args: (Schema | Field | Field[])[]) {\n\n const other = args[0] instanceof Schema ? args[0] as Schema\n : new Schema(selectArgs>(Field, args));\n\n const curFields = [...this.fields] as Field[];\n const metadata = mergeMaps(mergeMaps(new Map(), this.metadata), other.metadata);\n const newFields = other.fields.filter((f2) => {\n const i = curFields.findIndex((f) => f.name === f2.name);\n return ~i ? (curFields[i] = f2.clone({\n metadata: mergeMaps(mergeMaps(new Map(), curFields[i].metadata), f2.metadata)\n })) && false : true;\n }) as Field[];\n\n const newDictionaries = generateDictionaryMap(newFields, new Map());\n\n return new Schema(\n [...curFields, ...newFields], metadata,\n new Map([...this.dictionaries, ...newDictionaries])\n );\n }\n}\n\nexport class Field {\n\n public static new(props: { name: string | number, type: T, nullable?: boolean, metadata?: Map | null }): Field;\n public static new(name: string | number | Field, type: T, nullable?: boolean, metadata?: Map | null): Field;\n /** @nocollapse */\n public static new(...args: any[]) {\n let [name, type, nullable, metadata] = args;\n if (args[0] && typeof args[0] === 'object') {\n ({ name } = args[0]);\n (type === undefined) && (type = args[0].type);\n (nullable === undefined) && (nullable = args[0].nullable);\n (metadata === undefined) && (metadata = args[0].metadata);\n }\n return new Field(`${name}`, type, nullable, metadata);\n }\n\n public readonly type: T;\n public readonly name: string;\n public readonly nullable: boolean;\n public readonly metadata: Map;\n\n constructor(name: string, type: T, nullable = false, metadata?: Map | null) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata || new Map();\n }\n\n public get typeId() { return this.type.typeId; }\n public get [Symbol.toStringTag]() { return 'Field'; }\n public toString() { return `${this.name}: ${this.type}`; }\n public compareTo(other?: Field | null): other is Field {\n return comparer.compareField(this, other);\n }\n public clone(props: { name?: string | number, type?: R, nullable?: boolean, metadata?: Map | null }): Field;\n public clone(name?: string | number | Field, type?: R, nullable?: boolean, metadata?: Map | null): Field;\n public clone(...args: any[]) {\n let [name, type, nullable, metadata] = args;\n (!args[0] || typeof args[0] !== 'object')\n ? ([name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata] = args)\n : ({name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata} = args[0]);\n return Field.new(name, type, nullable, metadata);\n }\n}\n\n/** @ignore */\nfunction mergeMaps(m1?: Map | null, m2?: Map | null): Map {\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n\n/** @ignore */\nfunction generateDictionaryMap(fields: Field[], dictionaries = new Map()): Map {\n\n for (let i = -1, n = fields.length; ++i < n;) {\n const field = fields[i];\n const type = field.type;\n if (DataType.isDictionary(type)) {\n if (!dictionaries.has(type.id)) {\n dictionaries.set(type.id, type.dictionary);\n } else if (dictionaries.get(type.id) !== type.dictionary) {\n throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n }\n }\n if (type.children && type.children.length > 0) {\n generateDictionaryMap(type.children, dictionaries);\n }\n }\n\n return dictionaries;\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Schema.prototype as any).fields = null;\n(Schema.prototype as any).metadata = null;\n(Schema.prototype as any).dictionaries = null;\n\n(Field.prototype as any).type = null;\n(Field.prototype as any).name = null;\n(Field.prototype as any).nullable = null;\n(Field.prototype as any).metadata = null;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Run } from './run';\nimport { Field } from '../schema';\nimport { DataType, List } from '../type';\nimport { OffsetsBufferBuilder } from './buffer';\nimport { Builder, BuilderOptions, VariableWidthBuilder } from '../builder';\n\n/** @ignore */\nexport class ListBuilder extends VariableWidthBuilder, TNull> {\n protected _run = new Run();\n protected _offsets: OffsetsBufferBuilder;\n constructor(opts: BuilderOptions, TNull>) {\n super(opts);\n this._offsets = new OffsetsBufferBuilder();\n }\n public addChild(child: Builder, name = '0') {\n if (this.numChildren > 0) {\n throw new Error('ListBuilder can only have one child.');\n }\n this.children[this.numChildren] = child;\n this.type = new List(new Field(name, child.type, true));\n return this.numChildren - 1;\n }\n public clear() {\n this._run.clear();\n return super.clear();\n }\n protected _flushPending(pending: Map) {\n const run = this._run;\n const offsets = this._offsets;\n const setValue = this._setValue;\n let index = 0, value: Uint8Array | undefined;\n for ([index, value] of pending) {\n if (value === undefined) {\n offsets.set(index, 0);\n } else {\n offsets.set(index, value.length);\n setValue(this, index, run.bind(value));\n }\n }\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Run } from './run';\nimport { Field } from '../schema';\nimport { Builder } from '../builder';\nimport { DataType, FixedSizeList } from '../type';\n\n/** @ignore */\nexport class FixedSizeListBuilder extends Builder, TNull> {\n protected _run = new Run();\n public setValue(index: number, value: T['TValue']) {\n super.setValue(index, this._run.bind(value));\n }\n public addChild(child: Builder, name = '0') {\n if (this.numChildren > 0) {\n throw new Error('FixedSizeListBuilder can only have one child.');\n }\n const childIndex = this.children.push(child);\n this.type = new FixedSizeList(this.type.listSize, new Field(name, child.type, true));\n return childIndex;\n }\n public clear() {\n this._run.clear();\n return super.clear();\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field } from '../schema';\nimport { DataType, Map_, Struct } from '../type';\nimport { Builder, VariableWidthBuilder } from '../builder';\n\n/** @ignore */ type MapValue = Map_['TValue'];\n/** @ignore */ type MapValues = Map | undefined>;\n/** @ignore */ type MapValueExt = MapValue | { [key: string]: V } | { [key: number]: V } ;\n\n/** @ignore */\nexport class MapBuilder extends VariableWidthBuilder, TNull> {\n\n protected _pending: MapValues | undefined;\n public set(index: number, value: MapValueExt | TNull) {\n return super.set(index, value as MapValue | TNull);\n }\n\n public setValue(index: number, value: MapValueExt) {\n value = value instanceof Map ? value : new Map(Object.entries(value));\n const pending = this._pending || (this._pending = new Map() as MapValues);\n const current = pending.get(index);\n current && (this._pendingLength -= current.size);\n this._pendingLength += value.size;\n pending.set(index, value);\n }\n\n public addChild(child: Builder>, name = `${this.numChildren}`) {\n if (this.numChildren > 0) {\n throw new Error('ListBuilder can only have one child.');\n }\n this.children[this.numChildren] = child;\n this.type = new Map_(new Field(name, child.type, true), this.type.keysSorted);\n return this.numChildren - 1;\n }\n\n protected _flushPending(pending: MapValues) {\n const offsets = this._offsets;\n const setValue = this._setValue;\n pending.forEach((value, index) => {\n if (value === undefined) {\n offsets.set(index, 0);\n } else {\n offsets.set(index, value.size);\n setValue(this, index, value);\n }\n });\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field } from '../schema';\nimport { Builder } from '../builder';\nimport { DataType, Struct } from '../type';\n\n/** @ignore */\nexport class StructBuilder extends Builder, TNull> {\n public addChild(child: Builder, name = `${this.numChildren}`) {\n const childIndex = this.children.push(child);\n this.type = new Struct([...this.type.children, new Field(name, child.type, true)]);\n return childIndex;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field } from '../schema';\nimport { DataBufferBuilder } from './buffer';\nimport { Builder, BuilderOptions } from '../builder';\nimport { Union, SparseUnion, DenseUnion } from '../type';\n\nexport interface UnionBuilderOptions extends BuilderOptions {\n valueToChildTypeId?: (builder: UnionBuilder, value: any, offset: number) => number;\n}\n\n/** @ignore */\nexport abstract class UnionBuilder extends Builder {\n\n protected _typeIds: DataBufferBuilder;\n\n constructor(options: UnionBuilderOptions) {\n super(options);\n this._typeIds = new DataBufferBuilder(new Int8Array(0), 1);\n if (typeof options['valueToChildTypeId'] === 'function') {\n this._valueToChildTypeId = options['valueToChildTypeId'];\n }\n }\n\n public get typeIdToChildIndex() { return this.type.typeIdToChildIndex; }\n\n public append(value: T['TValue'] | TNull, childTypeId?: number) {\n return this.set(this.length, value, childTypeId);\n }\n\n public set(index: number, value: T['TValue'] | TNull, childTypeId?: number) {\n if (childTypeId === undefined) {\n childTypeId = this._valueToChildTypeId(this, value, index);\n }\n if (this.setValid(index, this.isValid(value))) {\n this.setValue(index, value, childTypeId);\n }\n return this;\n }\n\n // @ts-ignore\n public setValue(index: number, value: T['TValue'], childTypeId?: number) {\n this._typeIds.set(index, childTypeId!);\n super.setValue(index, value);\n }\n\n // @ts-ignore\n public addChild(child: Builder, name = `${this.children.length}`) {\n const childTypeId = this.children.push(child);\n const { type: { children, mode, typeIds } } = this;\n const fields = [...children, new Field(name, child.type)];\n this.type = new Union(mode, [...typeIds, childTypeId], fields);\n return childTypeId;\n }\n\n /** @ignore */\n // @ts-ignore\n protected _valueToChildTypeId(builder: UnionBuilder, value: any, offset: number): number {\n throw new Error(`Cannot map UnionBuilder value to child typeId. \\\nPass the \\`childTypeId\\` as the second argument to unionBuilder.append(), \\\nor supply a \\`valueToChildTypeId\\` function as part of the UnionBuilder constructor options.`);\n }\n}\n\n/** @ignore */\nexport class SparseUnionBuilder extends UnionBuilder {}\n/** @ignore */\nexport class DenseUnionBuilder extends UnionBuilder {\n\n protected _offsets: DataBufferBuilder;\n\n constructor(options: UnionBuilderOptions) {\n super(options);\n this._offsets = new DataBufferBuilder(new Int32Array(0));\n }\n\n /** @ignore */\n public setValue(index: number, value: T['TValue'], childTypeId?: number) {\n const childIndex = this.type.typeIdToChildIndex[childTypeId!];\n this._offsets.set(index, this.getChildAt(childIndex)!.length);\n return super.setValue(index, value, childTypeId);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Field } from '../schema';\nimport { Vector } from '../vector';\nimport { Visitor } from '../visitor';\nimport { encodeUtf8 } from '../util/utf8';\nimport { VectorType } from '../interfaces';\nimport { float64ToUint16 } from '../util/math';\nimport { toArrayBufferView } from '../util/buffer';\nimport { Type, UnionMode, Precision, DateUnit, TimeUnit, IntervalUnit } from '../enum';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface SetVisitor extends Visitor {\n visit(node: T, index: number, value: T['TValue']): void;\n visitMany(nodes: T[], indices: number[], values: T['TValue'][]): void[];\n getVisitFn(node: T): (vector: VectorType, index: number, value: VectorType['TValue']) => void;\n getVisitFn(node: VectorType | Data | T): (vector: VectorType, index: number, value: VectorType['TValue']) => void;\n visitNull (vector: VectorType, index: number, value: T['TValue']): void;\n visitBool (vector: VectorType, index: number, value: T['TValue']): void;\n visitInt (vector: VectorType, index: number, value: T['TValue']): void;\n visitInt8 (vector: VectorType, index: number, value: T['TValue']): void;\n visitInt16 (vector: VectorType, index: number, value: T['TValue']): void;\n visitInt32 (vector: VectorType, index: number, value: T['TValue']): void;\n visitInt64 (vector: VectorType, index: number, value: T['TValue']): void;\n visitUint8 (vector: VectorType, index: number, value: T['TValue']): void;\n visitUint16 (vector: VectorType, index: number, value: T['TValue']): void;\n visitUint32 (vector: VectorType, index: number, value: T['TValue']): void;\n visitUint64 (vector: VectorType, index: number, value: T['TValue']): void;\n visitFloat (vector: VectorType, index: number, value: T['TValue']): void;\n visitFloat16 (vector: VectorType, index: number, value: T['TValue']): void;\n visitFloat32 (vector: VectorType, index: number, value: T['TValue']): void;\n visitFloat64 (vector: VectorType, index: number, value: T['TValue']): void;\n visitUtf8 (vector: VectorType, index: number, value: T['TValue']): void;\n visitBinary (vector: VectorType, index: number, value: T['TValue']): void;\n visitFixedSizeBinary (vector: VectorType, index: number, value: T['TValue']): void;\n visitDate (vector: VectorType, index: number, value: T['TValue']): void;\n visitDateDay (vector: VectorType, index: number, value: T['TValue']): void;\n visitDateMillisecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimestamp (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimestampSecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimestampMillisecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimestampMicrosecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimestampNanosecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTime (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimeSecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimeMillisecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimeMicrosecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitTimeNanosecond (vector: VectorType, index: number, value: T['TValue']): void;\n visitDecimal (vector: VectorType, index: number, value: T['TValue']): void;\n visitList (vector: VectorType, index: number, value: T['TValue']): void;\n visitStruct (vector: VectorType, index: number, value: T['TValue']): void;\n visitUnion (vector: VectorType, index: number, value: T['TValue']): void;\n visitDenseUnion (vector: VectorType, index: number, value: T['TValue']): void;\n visitSparseUnion (vector: VectorType, index: number, value: T['TValue']): void;\n visitDictionary (vector: VectorType, index: number, value: T['TValue']): void;\n visitInterval (vector: VectorType, index: number, value: T['TValue']): void;\n visitIntervalDayTime (vector: VectorType, index: number, value: T['TValue']): void;\n visitIntervalYearMonth (vector: VectorType, index: number, value: T['TValue']): void;\n visitFixedSizeList (vector: VectorType, index: number, value: T['TValue']): void;\n visitMap (vector: VectorType, index: number, value: T['TValue']): void;\n}\n\n/** @ignore */\nexport class SetVisitor extends Visitor {}\n\n/** @ignore */\nconst setEpochMsToDays = (data: Int32Array, index: number, epochMs: number) => { data[index] = (epochMs / 86400000) | 0; };\n/** @ignore */\nconst setEpochMsToMillisecondsLong = (data: Int32Array, index: number, epochMs: number) => {\n data[index] = (epochMs % 4294967296) | 0;\n data[index + 1] = (epochMs / 4294967296) | 0;\n};\n/** @ignore */\nconst setEpochMsToMicrosecondsLong = (data: Int32Array, index: number, epochMs: number) => {\n data[index] = ((epochMs * 1000) % 4294967296) | 0;\n data[index + 1] = ((epochMs * 1000) / 4294967296) | 0;\n};\n/** @ignore */\nconst setEpochMsToNanosecondsLong = (data: Int32Array, index: number, epochMs: number) => {\n data[index] = ((epochMs * 1000000) % 4294967296) | 0;\n data[index + 1] = ((epochMs * 1000000) / 4294967296) | 0;\n};\n\n/** @ignore */\nconst setVariableWidthBytes = (values: Uint8Array, valueOffsets: Int32Array, index: number, value: Uint8Array) => {\n const { [index]: x, [index + 1]: y } = valueOffsets;\n if (x != null && y != null) {\n values.set(value.subarray(0, y - x), x);\n }\n};\n\n/** @ignore */\nconst setBool = ({ offset, values }: VectorType, index: number, val: boolean) => {\n const idx = offset + index;\n val ? (values[idx >> 3] |= (1 << (idx % 8))) // true\n : (values[idx >> 3] &= ~(1 << (idx % 8))); // false\n\n};\n\n/** @ignore */ type Numeric1X = Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32 | Float32 | Float64;\n/** @ignore */ type Numeric2X = Int64 | Uint64;\n\n/** @ignore */\nconst setDateDay = ({ values }: VectorType, index: number, value: T['TValue']): void => { setEpochMsToDays(values, index, value.valueOf()); };\n/** @ignore */\nconst setDateMillisecond = ({ values }: VectorType, index: number, value: T['TValue']): void => { setEpochMsToMillisecondsLong(values, index * 2, value.valueOf()); };\n/** @ignore */\nconst setNumeric = ({ stride, values }: VectorType, index: number, value: T['TValue']): void => { values[stride * index] = value; };\n/** @ignore */\nconst setFloat16 = ({ stride, values }: VectorType, index: number, value: T['TValue']): void => { values[stride * index] = float64ToUint16(value); };\n/** @ignore */\nconst setNumericX2 = (vector: VectorType, index: number, value: T['TValue']): void => {\n switch (typeof value) {\n case 'bigint': vector.values64[index] = value; break;\n case 'number': vector.values[index * vector.stride] = value; break;\n default:\n const val = value as T['TArray'];\n const { stride, ArrayType } = vector;\n const long = toArrayBufferView(ArrayType, val);\n vector.values.set(long.subarray(0, stride), stride * index);\n }\n};\n/** @ignore */\nconst setFixedSizeBinary = ({ stride, values }: VectorType, index: number, value: T['TValue']): void => { values.set(value.subarray(0, stride), stride * index); };\n\n/** @ignore */\nconst setBinary = ({ values, valueOffsets }: VectorType, index: number, value: T['TValue']) => setVariableWidthBytes(values, valueOffsets, index, value);\n/** @ignore */\nconst setUtf8 = ({ values, valueOffsets }: VectorType, index: number, value: T['TValue']) => {\n setVariableWidthBytes(values, valueOffsets, index, encodeUtf8(value));\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst setInt = (vector: VectorType, index: number, value: T['TValue']): void => {\n vector.type.bitWidth < 64\n ? setNumeric(vector as VectorType, index, value as Numeric1X['TValue'])\n : setNumericX2(vector as VectorType, index, value as Numeric2X['TValue']);\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst setFloat = (vector: VectorType, index: number, value: T['TValue']): void => {\n vector.type.precision !== Precision.HALF\n ? setNumeric(vector as VectorType, index, value)\n : setFloat16(vector as VectorType, index, value);\n};\n\n/* istanbul ignore next */\nconst setDate = (vector: VectorType, index: number, value: T['TValue']): void => {\n vector.type.unit === DateUnit.DAY\n ? setDateDay(vector as VectorType, index, value)\n : setDateMillisecond(vector as VectorType, index, value);\n};\n\n/** @ignore */\nconst setTimestampSecond = ({ values }: VectorType, index: number, value: T['TValue']): void => setEpochMsToMillisecondsLong(values, index * 2, value / 1000);\n/** @ignore */\nconst setTimestampMillisecond = ({ values }: VectorType, index: number, value: T['TValue']): void => setEpochMsToMillisecondsLong(values, index * 2, value);\n/** @ignore */\nconst setTimestampMicrosecond = ({ values }: VectorType, index: number, value: T['TValue']): void => setEpochMsToMicrosecondsLong(values, index * 2, value);\n/** @ignore */\nconst setTimestampNanosecond = ({ values }: VectorType, index: number, value: T['TValue']): void => setEpochMsToNanosecondsLong(values, index * 2, value);\n/* istanbul ignore next */\n/** @ignore */\nconst setTimestamp = (vector: VectorType, index: number, value: T['TValue']): void => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return setTimestampSecond(vector as VectorType, index, value);\n case TimeUnit.MILLISECOND: return setTimestampMillisecond(vector as VectorType, index, value);\n case TimeUnit.MICROSECOND: return setTimestampMicrosecond(vector as VectorType, index, value);\n case TimeUnit.NANOSECOND: return setTimestampNanosecond(vector as VectorType, index, value);\n }\n};\n\n/** @ignore */\nconst setTimeSecond = ({ values, stride }: VectorType, index: number, value: T['TValue']): void => { values[stride * index] = value; };\n/** @ignore */\nconst setTimeMillisecond = ({ values, stride }: VectorType, index: number, value: T['TValue']): void => { values[stride * index] = value; };\n/** @ignore */\nconst setTimeMicrosecond = ({ values }: VectorType, index: number, value: T['TValue']): void => { values.set(value.subarray(0, 2), 2 * index); };\n/** @ignore */\nconst setTimeNanosecond = ({ values }: VectorType, index: number, value: T['TValue']): void => { values.set(value.subarray(0, 2), 2 * index); };\n/* istanbul ignore next */\n/** @ignore */\nconst setTime = (vector: VectorType, index: number, value: T['TValue']): void => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return setTimeSecond(vector as VectorType, index, value as TimeSecond['TValue']);\n case TimeUnit.MILLISECOND: return setTimeMillisecond(vector as VectorType, index, value as TimeMillisecond['TValue']);\n case TimeUnit.MICROSECOND: return setTimeMicrosecond(vector as VectorType, index, value as TimeMicrosecond['TValue']);\n case TimeUnit.NANOSECOND: return setTimeNanosecond(vector as VectorType, index, value as TimeNanosecond['TValue']);\n }\n};\n\n/** @ignore */\nconst setDecimal = ({ values }: VectorType, index: number, value: T['TValue']): void => { values.set(value.subarray(0, 4), 4 * index); };\n\n/** @ignore */\nconst setList = (vector: VectorType, index: number, value: T['TValue']): void => {\n const values = vector.getChildAt(0)!, valueOffsets = vector.valueOffsets;\n for (let idx = -1, itr = valueOffsets[index], end = valueOffsets[index + 1]; itr < end;) {\n values.set(itr++, value.get(++idx));\n }\n};\n\n/** @ignore */\nconst setMap = (vector: VectorType, index: number, value: T['TValue']) => {\n const values = vector.getChildAt(0)!, valueOffsets = vector.valueOffsets;\n const entries = value instanceof Map ? [...value] : Object.entries(value);\n for (let idx = -1, itr = valueOffsets[index], end = valueOffsets[index + 1]; itr < end;) {\n values.set(itr++, entries[++idx]);\n }\n};\n\n/** @ignore */ const _setStructArrayValue = (o: number, v: any[]) => (c: Vector | null, _: Field, i: number) => c && c.set(o, v[i]);\n/** @ignore */ const _setStructVectorValue = (o: number, v: Vector) => (c: Vector | null, _: Field, i: number) => c && c.set(o, v.get(i));\n/** @ignore */ const _setStructMapValue = (o: number, v: Map) => (c: Vector | null, f: Field, _: number) => c && c.set(o, v.get(f.name));\n/** @ignore */ const _setStructObjectValue = (o: number, v: { [key: string]: any }) => (c: Vector | null, f: Field, _: number) => c && c.set(o, v[f.name]);\n/** @ignore */\nconst setStruct = (vector: VectorType, index: number, value: T['TValue']) => {\n\n const setValue = value instanceof Map ? _setStructMapValue(index, value) :\n value instanceof Vector ? _setStructVectorValue(index, value) :\n Array.isArray(value) ? _setStructArrayValue(index, value) :\n _setStructObjectValue(index, value) ;\n\n vector.type.children.forEach((f: Field, i: number) => setValue(vector.getChildAt(i), f, i));\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst setUnion = <\n V extends VectorType | VectorType | VectorType\n>(vector: V, index: number, value: V['TValue']) => {\n vector.type.mode === UnionMode.Dense ?\n setDenseUnion(vector as VectorType, index, value) :\n setSparseUnion(vector as VectorType, index, value);\n};\n\n/** @ignore */\nconst setDenseUnion = (vector: VectorType, index: number, value: T['TValue']): void => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n child && child.set(vector.valueOffsets[index], value);\n};\n\n/** @ignore */\nconst setSparseUnion = (vector: VectorType, index: number, value: T['TValue']): void => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n child && child.set(index, value);\n};\n\n/** @ignore */\nconst setDictionary = (vector: VectorType, index: number, value: T['TValue']): void => {\n const key = vector.getKey(index);\n if (key !== null) {\n vector.setValue(key, value);\n }\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst setIntervalValue = (vector: VectorType, index: number, value: T['TValue']): void => {\n (vector.type.unit === IntervalUnit.DAY_TIME)\n ? setIntervalDayTime(vector as VectorType, index, value)\n : setIntervalYearMonth(vector as VectorType, index, value);\n};\n\n/** @ignore */\nconst setIntervalDayTime = ({ values }: VectorType, index: number, value: T['TValue']): void => { values.set(value.subarray(0, 2), 2 * index); };\n/** @ignore */\nconst setIntervalYearMonth = ({ values }: VectorType, index: number, value: T['TValue']): void => { values[index] = (value[0] * 12) + (value[1] % 12); };\n\n/** @ignore */\nconst setFixedSizeList = (vector: VectorType, index: number, value: T['TValue']): void => {\n const child = vector.getChildAt(0)!, { stride } = vector;\n for (let idx = -1, offset = index * stride; ++idx < stride;) {\n child.set(offset + idx, value.get(idx));\n }\n};\n\nSetVisitor.prototype.visitBool = setBool;\nSetVisitor.prototype.visitInt = setInt;\nSetVisitor.prototype.visitInt8 = setNumeric;\nSetVisitor.prototype.visitInt16 = setNumeric;\nSetVisitor.prototype.visitInt32 = setNumeric;\nSetVisitor.prototype.visitInt64 = setNumericX2;\nSetVisitor.prototype.visitUint8 = setNumeric;\nSetVisitor.prototype.visitUint16 = setNumeric;\nSetVisitor.prototype.visitUint32 = setNumeric;\nSetVisitor.prototype.visitUint64 = setNumericX2;\nSetVisitor.prototype.visitFloat = setFloat;\nSetVisitor.prototype.visitFloat16 = setFloat16;\nSetVisitor.prototype.visitFloat32 = setNumeric;\nSetVisitor.prototype.visitFloat64 = setNumeric;\nSetVisitor.prototype.visitUtf8 = setUtf8;\nSetVisitor.prototype.visitBinary = setBinary;\nSetVisitor.prototype.visitFixedSizeBinary = setFixedSizeBinary;\nSetVisitor.prototype.visitDate = setDate;\nSetVisitor.prototype.visitDateDay = setDateDay;\nSetVisitor.prototype.visitDateMillisecond = setDateMillisecond;\nSetVisitor.prototype.visitTimestamp = setTimestamp;\nSetVisitor.prototype.visitTimestampSecond = setTimestampSecond;\nSetVisitor.prototype.visitTimestampMillisecond = setTimestampMillisecond;\nSetVisitor.prototype.visitTimestampMicrosecond = setTimestampMicrosecond;\nSetVisitor.prototype.visitTimestampNanosecond = setTimestampNanosecond;\nSetVisitor.prototype.visitTime = setTime;\nSetVisitor.prototype.visitTimeSecond = setTimeSecond;\nSetVisitor.prototype.visitTimeMillisecond = setTimeMillisecond;\nSetVisitor.prototype.visitTimeMicrosecond = setTimeMicrosecond;\nSetVisitor.prototype.visitTimeNanosecond = setTimeNanosecond;\nSetVisitor.prototype.visitDecimal = setDecimal;\nSetVisitor.prototype.visitList = setList;\nSetVisitor.prototype.visitStruct = setStruct;\nSetVisitor.prototype.visitUnion = setUnion;\nSetVisitor.prototype.visitDenseUnion = setDenseUnion;\nSetVisitor.prototype.visitSparseUnion = setSparseUnion;\nSetVisitor.prototype.visitDictionary = setDictionary;\nSetVisitor.prototype.visitInterval = setIntervalValue;\nSetVisitor.prototype.visitIntervalDayTime = setIntervalDayTime;\nSetVisitor.prototype.visitIntervalYearMonth = setIntervalYearMonth;\nSetVisitor.prototype.visitFixedSizeList = setFixedSizeList;\nSetVisitor.prototype.visitMap = setMap;\n\n/** @ignore */\nexport const instance = new SetVisitor();\n","// automatically generated by the FlatBuffers compiler, do not modify\n\nimport { flatbuffers } from 'flatbuffers';\nimport * as NS7624605610262437867 from './Schema';\n/**\n * ----------------------------------------------------------------------\n * Arrow File metadata\n *\n *\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Footer {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Footer\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Footer {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Footer= obj\n * @returns Footer\n */\n static getRootAsFooter(bb: flatbuffers.ByteBuffer, obj?: Footer): Footer {\n return (obj || new Footer).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n\n /**\n * @returns org.apache.arrow.flatbuf.MetadataVersion\n */\n version(): NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion {\n let offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb!.readInt16(this.bb_pos + offset)) : NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1;\n }\n\n /**\n * @param org.apache.arrow.flatbuf.Schema= obj\n * @returns org.apache.arrow.flatbuf.Schema|null\n */\n schema(obj?: NS7624605610262437867.org.apache.arrow.flatbuf.Schema): NS7624605610262437867.org.apache.arrow.flatbuf.Schema | null {\n let offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new NS7624605610262437867.org.apache.arrow.flatbuf.Schema).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n }\n\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.Block= obj\n * @returns org.apache.arrow.flatbuf.Block\n */\n dictionaries(index: number, obj?: org.apache.arrow.flatbuf.Block): org.apache.arrow.flatbuf.Block | null {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new org.apache.arrow.flatbuf.Block).__init(this.bb!.__vector(this.bb_pos + offset) + index * 24, this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n dictionariesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.Block= obj\n * @returns org.apache.arrow.flatbuf.Block\n */\n recordBatches(index: number, obj?: org.apache.arrow.flatbuf.Block): org.apache.arrow.flatbuf.Block | null {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? (obj || new org.apache.arrow.flatbuf.Block).__init(this.bb!.__vector(this.bb_pos + offset) + index * 24, this.bb!) : null;\n }\n\n /**\n * @returns number\n */\n recordBatchesLength(): number {\n let offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n }\n\n /**\n * @param flatbuffers.Builder builder\n */\n static startFooter(builder: flatbuffers.Builder) {\n builder.startObject(4);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.MetadataVersion version\n */\n static addVersion(builder: flatbuffers.Builder, version: NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion) {\n builder.addFieldInt16(0, version, NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset schemaOffset\n */\n static addSchema(builder: flatbuffers.Builder, schemaOffset: flatbuffers.Offset) {\n builder.addFieldOffset(1, schemaOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dictionariesOffset\n */\n static addDictionaries(builder: flatbuffers.Builder, dictionariesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(2, dictionariesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startDictionariesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(24, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset recordBatchesOffset\n */\n static addRecordBatches(builder: flatbuffers.Builder, recordBatchesOffset: flatbuffers.Offset) {\n builder.addFieldOffset(3, recordBatchesOffset, 0);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startRecordBatchesVector(builder: flatbuffers.Builder, numElems: number) {\n builder.startVector(24, numElems, 8);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFooter(builder: flatbuffers.Builder): flatbuffers.Offset {\n let offset = builder.endObject();\n return offset;\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishFooterBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) {\n builder.finish(offset);\n }\n\n static createFooter(builder: flatbuffers.Builder, version: NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion, schemaOffset: flatbuffers.Offset, dictionariesOffset: flatbuffers.Offset, recordBatchesOffset: flatbuffers.Offset): flatbuffers.Offset {\n Footer.startFooter(builder);\n Footer.addVersion(builder, version);\n Footer.addSchema(builder, schemaOffset);\n Footer.addDictionaries(builder, dictionariesOffset);\n Footer.addRecordBatches(builder, recordBatchesOffset);\n return Footer.endFooter(builder);\n }\n }\n}\n/**\n * @constructor\n */\nexport namespace org.apache.arrow.flatbuf {\n export class Block {\n bb: flatbuffers.ByteBuffer | null = null;\n\n bb_pos: number = 0;\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Block\n */\n __init(i: number, bb: flatbuffers.ByteBuffer): Block {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n\n /**\n * Index to the start of the RecordBlock (note this is past the Message header)\n *\n * @returns flatbuffers.Long\n */\n offset(): flatbuffers.Long {\n return this.bb!.readInt64(this.bb_pos);\n }\n\n /**\n * Length of the metadata\n *\n * @returns number\n */\n metaDataLength(): number {\n return this.bb!.readInt32(this.bb_pos + 8);\n }\n\n /**\n * Length of the data (this is aligned so there can be a gap between this and\n * the metatdata).\n *\n * @returns flatbuffers.Long\n */\n bodyLength(): flatbuffers.Long {\n return this.bb!.readInt64(this.bb_pos + 16);\n }\n\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long offset\n * @param number metaDataLength\n * @param flatbuffers.Long bodyLength\n * @returns flatbuffers.Offset\n */\n static createBlock(builder: flatbuffers.Builder, offset: flatbuffers.Long, metaDataLength: number, bodyLength: flatbuffers.Long): flatbuffers.Offset {\n builder.prep(8, 24);\n builder.writeInt64(bodyLength);\n builder.pad(4);\n builder.writeInt32(metaDataLength);\n builder.writeInt64(offset);\n return builder.offset();\n }\n\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { DataType } from '../type';\nimport { Visitor } from '../visitor';\nimport { VectorType, BuilderCtor } from '../interfaces';\nimport { BinaryBuilder } from '../builder/binary';\nimport { BoolBuilder } from '../builder/bool';\nimport { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from '../builder/date';\nimport { DecimalBuilder } from '../builder/decimal';\nimport { DictionaryBuilder } from '../builder/dictionary';\nimport { FixedSizeBinaryBuilder } from '../builder/fixedsizebinary';\nimport { FixedSizeListBuilder } from '../builder/fixedsizelist';\nimport { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from '../builder/float';\nimport { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder } from '../builder/interval';\nimport { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from '../builder/int';\nimport { ListBuilder } from '../builder/list';\nimport { MapBuilder } from '../builder/map';\nimport { NullBuilder } from '../builder/null';\nimport { StructBuilder } from '../builder/struct';\nimport { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from '../builder/timestamp';\nimport { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from '../builder/time';\nimport { UnionBuilder, DenseUnionBuilder, SparseUnionBuilder } from '../builder/union';\nimport { Utf8Builder } from '../builder/utf8';\n\n/** @ignore */\nexport interface GetBuilderCtor extends Visitor {\n visit(type: T): BuilderCtor;\n visitMany(types: T[]): BuilderCtor[];\n getVisitFn(type: T): () => BuilderCtor;\n getVisitFn(node: VectorType | Data | T): () => BuilderCtor;\n}\n\n/** @ignore */\nexport class GetBuilderCtor extends Visitor {\n public visitNull () { return NullBuilder; }\n public visitBool () { return BoolBuilder; }\n public visitInt () { return IntBuilder; }\n public visitInt8 () { return Int8Builder; }\n public visitInt16 () { return Int16Builder; }\n public visitInt32 () { return Int32Builder; }\n public visitInt64 () { return Int64Builder; }\n public visitUint8 () { return Uint8Builder; }\n public visitUint16 () { return Uint16Builder; }\n public visitUint32 () { return Uint32Builder; }\n public visitUint64 () { return Uint64Builder; }\n public visitFloat () { return FloatBuilder; }\n public visitFloat16 () { return Float16Builder; }\n public visitFloat32 () { return Float32Builder; }\n public visitFloat64 () { return Float64Builder; }\n public visitUtf8 () { return Utf8Builder; }\n public visitBinary () { return BinaryBuilder; }\n public visitFixedSizeBinary () { return FixedSizeBinaryBuilder; }\n public visitDate () { return DateBuilder; }\n public visitDateDay () { return DateDayBuilder; }\n public visitDateMillisecond () { return DateMillisecondBuilder; }\n public visitTimestamp () { return TimestampBuilder; }\n public visitTimestampSecond () { return TimestampSecondBuilder; }\n public visitTimestampMillisecond () { return TimestampMillisecondBuilder; }\n public visitTimestampMicrosecond () { return TimestampMicrosecondBuilder; }\n public visitTimestampNanosecond () { return TimestampNanosecondBuilder; }\n public visitTime () { return TimeBuilder; }\n public visitTimeSecond () { return TimeSecondBuilder; }\n public visitTimeMillisecond () { return TimeMillisecondBuilder; }\n public visitTimeMicrosecond () { return TimeMicrosecondBuilder; }\n public visitTimeNanosecond () { return TimeNanosecondBuilder; }\n public visitDecimal () { return DecimalBuilder; }\n public visitList () { return ListBuilder; }\n public visitStruct () { return StructBuilder; }\n public visitUnion () { return UnionBuilder; }\n public visitDenseUnion () { return DenseUnionBuilder; }\n public visitSparseUnion () { return SparseUnionBuilder; }\n public visitDictionary () { return DictionaryBuilder; }\n public visitInterval () { return IntervalBuilder; }\n public visitIntervalDayTime () { return IntervalDayTimeBuilder; }\n public visitIntervalYearMonth () { return IntervalYearMonthBuilder; }\n public visitFixedSizeList () { return FixedSizeListBuilder; }\n public visitMap () { return MapBuilder; }\n}\n\n/** @ignore */\nexport const instance = new GetBuilderCtor();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/** @ignore */\nexport { Builder, BuilderOptions } from '../builder';\nexport { BoolBuilder } from './bool';\nexport { NullBuilder } from './null';\nexport { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from './date';\nexport { DecimalBuilder } from './decimal';\nexport { DictionaryBuilder } from './dictionary';\nexport { FixedSizeBinaryBuilder } from './fixedsizebinary';\nexport { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from './float';\nexport { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from './int';\nexport { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from './time';\nexport { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from './timestamp';\nexport { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder } from './interval';\nexport { Utf8Builder } from './utf8';\nexport { BinaryBuilder } from './binary';\nexport { ListBuilder } from './list';\nexport { FixedSizeListBuilder } from './fixedsizelist';\nexport { MapBuilder } from './map';\nexport { StructBuilder } from './struct';\nexport { UnionBuilder, SparseUnionBuilder, DenseUnionBuilder } from './union';\n\nimport { Type } from '../enum';\nimport { Field } from '../schema';\nimport { DataType } from '../type';\nimport { Utf8Builder } from './utf8';\nimport { BuilderType as B } from '../interfaces';\nimport { Builder, BuilderOptions } from '../builder';\nimport { instance as setVisitor } from '../visitor/set';\nimport { instance as getBuilderConstructor } from '../visitor/builderctor';\n\n/** @nocollapse */\nBuilder.new = newBuilder;\n\nfunction newBuilder(options: BuilderOptions): B {\n\n const type = options.type;\n const builder = new (getBuilderConstructor.getVisitFn(type)())(options) as Builder;\n\n if (type.children && type.children.length > 0) {\n\n const children = options['children'] || [] as BuilderOptions[];\n const defaultOptions = { 'nullValues': options['nullValues'] };\n const getChildOptions = Array.isArray(children)\n ? ((_: Field, i: number) => children[i] || defaultOptions)\n : (({ name }: Field) => children[name] || defaultOptions);\n\n type.children.forEach((field, index) => {\n const { type } = field;\n const opts = getChildOptions(field, index);\n builder.children.push(newBuilder({ ...opts, type }));\n });\n }\n\n return builder as B;\n}\n\n(Object.keys(Type) as any[])\n .map((T: any) => Type[T] as any)\n .filter((T: any): T is Type => typeof T === 'number' && T !== Type.NONE)\n .forEach((typeId) => {\n const BuilderCtor = getBuilderConstructor.visit(typeId);\n BuilderCtor.prototype._setValue = setVisitor.getVisitFn(typeId);\n });\n\n(Utf8Builder.prototype as any)._setValue = setVisitor.visitBinary;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/* tslint:disable:class-name */\n\nimport * as File_ from '../../fb/File';\nimport { flatbuffers } from 'flatbuffers';\n\nimport Long = flatbuffers.Long;\nimport Builder = flatbuffers.Builder;\nimport ByteBuffer = flatbuffers.ByteBuffer;\nimport _Block = File_.org.apache.arrow.flatbuf.Block;\nimport _Footer = File_.org.apache.arrow.flatbuf.Footer;\n\nimport { Schema } from '../../schema';\nimport { MetadataVersion } from '../../enum';\nimport { toUint8Array } from '../../util/buffer';\nimport { ArrayBufferViewInput } from '../../util/buffer';\n\n/** @ignore */\nclass Footer_ {\n\n /** @nocollapse */\n public static decode(buf: ArrayBufferViewInput) {\n buf = new ByteBuffer(toUint8Array(buf));\n const footer = _Footer.getRootAsFooter(buf);\n const schema = Schema.decode(footer.schema()!);\n return new OffHeapFooter(schema, footer) as Footer_;\n }\n\n /** @nocollapse */\n public static encode(footer: Footer_) {\n\n const b: Builder = new Builder();\n const schemaOffset = Schema.encode(b, footer.schema);\n\n _Footer.startRecordBatchesVector(b, footer.numRecordBatches);\n [...footer.recordBatches()].slice().reverse().forEach((rb) => FileBlock.encode(b, rb));\n const recordBatchesOffset = b.endVector();\n\n _Footer.startDictionariesVector(b, footer.numDictionaries);\n [...footer.dictionaryBatches()].slice().reverse().forEach((db) => FileBlock.encode(b, db));\n\n const dictionaryBatchesOffset = b.endVector();\n\n _Footer.startFooter(b);\n _Footer.addSchema(b, schemaOffset);\n _Footer.addVersion(b, MetadataVersion.V4);\n _Footer.addRecordBatches(b, recordBatchesOffset);\n _Footer.addDictionaries(b, dictionaryBatchesOffset);\n _Footer.finishFooterBuffer(b, _Footer.endFooter(b));\n\n return b.asUint8Array();\n }\n\n // @ts-ignore\n protected _recordBatches: FileBlock[];\n // @ts-ignore\n protected _dictionaryBatches: FileBlock[];\n public get numRecordBatches() { return this._recordBatches.length; }\n public get numDictionaries() { return this._dictionaryBatches.length; }\n\n constructor(public schema: Schema,\n public version: MetadataVersion = MetadataVersion.V4,\n recordBatches?: FileBlock[], dictionaryBatches?: FileBlock[]) {\n recordBatches && (this._recordBatches = recordBatches);\n dictionaryBatches && (this._dictionaryBatches = dictionaryBatches);\n }\n\n public *recordBatches(): Iterable {\n for (let block, i = -1, n = this.numRecordBatches; ++i < n;) {\n if (block = this.getRecordBatch(i)) { yield block; }\n }\n }\n\n public *dictionaryBatches(): Iterable {\n for (let block, i = -1, n = this.numDictionaries; ++i < n;) {\n if (block = this.getDictionaryBatch(i)) { yield block; }\n }\n }\n\n public getRecordBatch(index: number) {\n return index >= 0\n && index < this.numRecordBatches\n && this._recordBatches[index] || null;\n }\n\n public getDictionaryBatch(index: number) {\n return index >= 0\n && index < this.numDictionaries\n && this._dictionaryBatches[index] || null;\n }\n}\n\nexport { Footer_ as Footer };\n\n/** @ignore */\nclass OffHeapFooter extends Footer_ {\n\n public get numRecordBatches() { return this._footer.recordBatchesLength(); }\n public get numDictionaries() { return this._footer.dictionariesLength(); }\n\n constructor(schema: Schema, protected _footer: _Footer) {\n super(schema, _footer.version());\n }\n\n public getRecordBatch(index: number) {\n if (index >= 0 && index < this.numRecordBatches) {\n const fileBlock = this._footer.recordBatches(index);\n if (fileBlock) { return FileBlock.decode(fileBlock); }\n }\n return null;\n }\n\n public getDictionaryBatch(index: number) {\n if (index >= 0 && index < this.numDictionaries) {\n const fileBlock = this._footer.dictionaries(index);\n if (fileBlock) { return FileBlock.decode(fileBlock); }\n }\n return null;\n }\n}\n\n/** @ignore */\nexport class FileBlock {\n\n /** @nocollapse */\n public static decode(block: _Block) {\n return new FileBlock(block.metaDataLength(), block.bodyLength(), block.offset());\n }\n\n /** @nocollapse */\n public static encode(b: Builder, fileBlock: FileBlock) {\n const { metaDataLength } = fileBlock;\n const offset = new Long(fileBlock.offset, 0);\n const bodyLength = new Long(fileBlock.bodyLength, 0);\n return _Block.createBlock(b, offset, metaDataLength, bodyLength);\n }\n\n public offset: number;\n public bodyLength: number;\n public metaDataLength: number;\n\n constructor(metaDataLength: number, bodyLength: Long | number, offset: Long | number) {\n this.metaDataLength = metaDataLength;\n this.offset = typeof offset === 'number' ? offset : offset.low;\n this.bodyLength = typeof bodyLength === 'number' ? bodyLength : bodyLength.low;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './adapters';\nimport { decodeUtf8 } from '../util/utf8';\nimport { ITERATOR_DONE, Readable, Writable, AsyncQueue } from './interfaces';\nimport { toUint8Array, joinUint8Arrays, ArrayBufferViewInput } from '../util/buffer';\n\nimport {\n isPromise, isFetchResponse,\n isIterable, isAsyncIterable,\n isReadableDOMStream, isReadableNodeStream\n} from '../util/compat';\n\n/** @ignore */\nexport type WritableSink = Writable | WritableStream | NodeJS.WritableStream | null;\n/** @ignore */\nexport type ReadableSource = Readable | PromiseLike | AsyncIterable | ReadableStream | NodeJS.ReadableStream | null;\n\n/** @ignore */\nexport class AsyncByteQueue extends AsyncQueue {\n public write(value: ArrayBufferViewInput | Uint8Array) {\n if ((value = toUint8Array(value)).byteLength > 0) {\n return super.write(value as T);\n }\n }\n public toString(sync: true): string;\n public toString(sync?: false): Promise;\n public toString(sync = false) {\n return sync\n ? decodeUtf8(this.toUint8Array(true))\n : this.toUint8Array(false).then(decodeUtf8);\n }\n public toUint8Array(sync: true): Uint8Array;\n public toUint8Array(sync?: false): Promise;\n public toUint8Array(sync = false) {\n return sync ? joinUint8Arrays(this._values as any[])[0] : (async () => {\n let buffers = [], byteLength = 0;\n for await (const chunk of this) {\n buffers.push(chunk);\n byteLength += chunk.byteLength;\n }\n return joinUint8Arrays(buffers, byteLength)[0];\n })();\n }\n}\n\n/** @ignore */\nexport class ByteStream implements IterableIterator {\n // @ts-ignore\n private source: ByteStreamSource;\n constructor(source?: Iterable | ArrayBufferViewInput) {\n if (source) {\n this.source = new ByteStreamSource(streamAdapters.fromIterable(source));\n }\n }\n [Symbol.iterator]() { return this; }\n public next(value?: any) { return this.source.next(value); }\n public throw(value?: any) { return this.source.throw(value); }\n public return(value?: any) { return this.source.return(value); }\n public peek(size?: number | null) { return this.source.peek(size); }\n public read(size?: number | null) { return this.source.read(size); }\n}\n\n/** @ignore */\nexport class AsyncByteStream implements Readable, AsyncIterableIterator {\n // @ts-ignore\n private source: AsyncByteStreamSource;\n constructor(source?: PromiseLike | Response | ReadableStream | NodeJS.ReadableStream | AsyncIterable | Iterable) {\n if (source instanceof AsyncByteStream) {\n this.source = (source as AsyncByteStream).source;\n } else if (source instanceof AsyncByteQueue) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n } else if (isReadableNodeStream(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromNodeStream(source));\n } else if (isReadableDOMStream(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromDOMStream(source));\n } else if (isFetchResponse(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromDOMStream(source.body!));\n } else if (isIterable(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromIterable(source));\n } else if (isPromise(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n } else if (isAsyncIterable(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n }\n [Symbol.asyncIterator]() { return this; }\n public next(value?: any) { return this.source.next(value); }\n public throw(value?: any) { return this.source.throw(value); }\n public return(value?: any) { return this.source.return(value); }\n public get closed(): Promise { return this.source.closed; }\n public cancel(reason?: any) { return this.source.cancel(reason); }\n public peek(size?: number | null) { return this.source.peek(size); }\n public read(size?: number | null) { return this.source.read(size); }\n}\n\n/** @ignore */\ninterface ByteStreamSourceIterator extends IterableIterator {\n next(value?: { cmd: 'peek' | 'read', size?: number | null }): IteratorResult;\n}\n\n/** @ignore */\ninterface AsyncByteStreamSourceIterator extends AsyncIterableIterator {\n next(value?: { cmd: 'peek' | 'read', size?: number | null }): Promise>;\n}\n\n/** @ignore */\nclass ByteStreamSource {\n constructor(protected source: ByteStreamSourceIterator) {}\n public cancel(reason?: any) { this.return(reason); }\n public peek(size?: number | null): T | null { return this.next(size, 'peek').value; }\n public read(size?: number | null): T | null { return this.next(size, 'read').value; }\n public next(size?: number | null, cmd: 'peek' | 'read' = 'read') { return this.source.next({ cmd, size }); }\n public throw(value?: any) { return Object.create((this.source.throw && this.source.throw(value)) || ITERATOR_DONE); }\n public return(value?: any) { return Object.create((this.source.return && this.source.return(value)) || ITERATOR_DONE); }\n}\n\n/** @ignore */\nclass AsyncByteStreamSource implements Readable {\n\n private _closedPromise: Promise;\n private _closedPromiseResolve?: (value?: any) => void;\n constructor (protected source: ByteStreamSourceIterator | AsyncByteStreamSourceIterator) {\n this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);\n }\n public async cancel(reason?: any) { await this.return(reason); }\n public get closed(): Promise { return this._closedPromise; }\n public async read(size?: number | null): Promise { return (await this.next(size, 'read')).value; }\n public async peek(size?: number | null): Promise { return (await this.next(size, 'peek')).value; }\n public async next(size?: number | null, cmd: 'peek' | 'read' = 'read') { return (await this.source.next({ cmd, size })); }\n public async throw(value?: any) {\n const result = (this.source.throw && await this.source.throw(value)) || ITERATOR_DONE;\n this._closedPromiseResolve && this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n return Object.create(result);\n }\n public async return(value?: any) {\n const result = (this.source.return && await this.source.return(value)) || ITERATOR_DONE;\n this._closedPromiseResolve && this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n return Object.create(result);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FileHandle } from './interfaces';\nimport { ByteStream, AsyncByteStream } from './stream';\nimport { ArrayBufferViewInput, toUint8Array } from '../util/buffer';\n\n/** @ignore */\nexport class RandomAccessFile extends ByteStream {\n public size: number;\n public position: number = 0;\n protected buffer: Uint8Array | null;\n constructor(buffer: ArrayBufferViewInput, byteLength?: number) {\n super();\n this.buffer = toUint8Array(buffer);\n this.size = typeof byteLength === 'undefined' ? this.buffer.byteLength : byteLength;\n }\n public readInt32(position: number) {\n const { buffer, byteOffset } = this.readAt(position, 4);\n return new DataView(buffer, byteOffset).getInt32(0, true);\n }\n public seek(position: number) {\n this.position = Math.min(position, this.size);\n return position < this.size;\n }\n public read(nBytes?: number | null) {\n const { buffer, size, position } = this;\n if (buffer && position < size) {\n if (typeof nBytes !== 'number') { nBytes = Infinity; }\n this.position = Math.min(size,\n position + Math.min(size - position, nBytes));\n return buffer.subarray(position, this.position);\n }\n return null;\n }\n public readAt(position: number, nBytes: number) {\n const buf = this.buffer;\n const end = Math.min(this.size, position + nBytes);\n return buf ? buf.subarray(position, end) : new Uint8Array(nBytes);\n }\n public close() { this.buffer && (this.buffer = null); }\n public throw(value?: any) { this.close(); return { done: true, value }; }\n public return(value?: any) { this.close(); return { done: true, value }; }\n}\n\n/** @ignore */\nexport class AsyncRandomAccessFile extends AsyncByteStream {\n // @ts-ignore\n public size: number;\n public position: number = 0;\n public _pending?: Promise;\n protected _handle: FileHandle | null;\n constructor(file: FileHandle, byteLength?: number) {\n super();\n this._handle = file;\n if (typeof byteLength === 'number') {\n this.size = byteLength;\n } else {\n this._pending = (async () => {\n this.size = (await file.stat()).size;\n delete this._pending;\n })();\n }\n }\n public async readInt32(position: number) {\n const { buffer, byteOffset } = await this.readAt(position, 4);\n return new DataView(buffer, byteOffset).getInt32(0, true);\n }\n public async seek(position: number) {\n this._pending && await this._pending;\n this.position = Math.min(position, this.size);\n return position < this.size;\n }\n public async read(nBytes?: number | null) {\n this._pending && await this._pending;\n const { _handle: file, size, position } = this;\n if (file && position < size) {\n if (typeof nBytes !== 'number') { nBytes = Infinity; }\n let pos = position, offset = 0, bytesRead = 0;\n let end = Math.min(size, pos + Math.min(size - pos, nBytes));\n let buffer = new Uint8Array(Math.max(0, (this.position = end) - pos));\n while ((pos += bytesRead) < end && (offset += bytesRead) < buffer.byteLength) {\n ({ bytesRead } = await file.read(buffer, offset, buffer.byteLength - offset, pos));\n }\n return buffer;\n }\n return null;\n }\n public async readAt(position: number, nBytes: number) {\n this._pending && await this._pending;\n const { _handle: file, size } = this;\n if (file && (position + nBytes) < size) {\n const end = Math.min(size, position + nBytes);\n const buffer = new Uint8Array(end - position);\n return (await file.read(buffer, 0, nBytes, position)).buffer;\n }\n return new Uint8Array(nBytes);\n }\n public async close() { const f = this._handle; this._handle = null; f && await f.close(); }\n public async throw(value?: any) { await this.close(); return { done: true, value }; }\n public async return(value?: any) { await this.close(); return { done: true, value }; }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/** @ignore */\nconst carryBit16 = 1 << 16;\n\n/** @ignore */\nfunction intAsHex(value: number): string {\n if (value < 0) {\n value = 0xFFFFFFFF + value + 1;\n }\n return `0x${value.toString(16)}`;\n}\n\n/** @ignore */\nconst kInt32DecimalDigits = 8;\n/** @ignore */\nconst kPowersOfTen = [1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000];\n\n/** @ignore */\nexport class BaseInt64 {\n constructor (protected buffer: Uint32Array) {}\n\n public high(): number { return this.buffer[1]; }\n public low (): number { return this.buffer[0]; }\n\n protected _times(other: BaseInt64) {\n // Break the left and right numbers into 16 bit chunks\n // so that we can multiply them without overflow.\n const L = new Uint32Array([\n this.buffer[1] >>> 16,\n this.buffer[1] & 0xFFFF,\n this.buffer[0] >>> 16,\n this.buffer[0] & 0xFFFF\n ]);\n\n const R = new Uint32Array([\n other.buffer[1] >>> 16,\n other.buffer[1] & 0xFFFF,\n other.buffer[0] >>> 16,\n other.buffer[0] & 0xFFFF\n ]);\n\n let product = L[3] * R[3];\n this.buffer[0] = product & 0xFFFF;\n\n let sum = product >>> 16;\n\n product = L[2] * R[3];\n sum += product;\n\n product = (L[3] * R[2]) >>> 0;\n sum += product;\n\n this.buffer[0] += sum << 16;\n\n this.buffer[1] = (sum >>> 0 < product ? carryBit16 : 0);\n\n this.buffer[1] += sum >>> 16;\n this.buffer[1] += L[1] * R[3] + L[2] * R[2] + L[3] * R[1];\n this.buffer[1] += (L[0] * R[3] + L[1] * R[2] + L[2] * R[1] + L[3] * R[0]) << 16;\n\n return this;\n }\n\n protected _plus(other: BaseInt64) {\n const sum = (this.buffer[0] + other.buffer[0]) >>> 0;\n this.buffer[1] += other.buffer[1];\n if (sum < (this.buffer[0] >>> 0)) {\n ++this.buffer[1];\n }\n this.buffer[0] = sum;\n }\n\n public lessThan(other: BaseInt64): boolean {\n return this.buffer[1] < other.buffer[1] ||\n (this.buffer[1] === other.buffer[1] && this.buffer[0] < other.buffer[0]);\n }\n\n public equals(other: BaseInt64): boolean {\n return this.buffer[1] === other.buffer[1] && this.buffer[0] == other.buffer[0];\n }\n\n public greaterThan(other: BaseInt64): boolean {\n return other.lessThan(this);\n }\n\n public hex(): string {\n return `${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n}\n\n/** @ignore */\nexport class Uint64 extends BaseInt64 {\n public times(other: Uint64): Uint64 {\n this._times(other);\n return this;\n }\n\n public plus(other: Uint64): Uint64 {\n this._plus(other);\n return this;\n }\n\n /** @nocollapse */\n public static from(val: any, out_buffer = new Uint32Array(2)): Uint64 {\n return Uint64.fromString(\n typeof(val) === 'string' ? val : val.toString(),\n out_buffer\n );\n }\n\n /** @nocollapse */\n public static fromNumber(num: number, out_buffer = new Uint32Array(2)): Uint64 {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Uint64.fromString(num.toString(), out_buffer);\n }\n\n /** @nocollapse */\n public static fromString(str: string, out_buffer = new Uint32Array(2)): Uint64 {\n const length = str.length;\n\n let out = new Uint64(out_buffer);\n for (let posn = 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Uint64(new Uint32Array([parseInt(str.substr(posn, group), 10), 0]));\n const multiple = new Uint64(new Uint32Array([kPowersOfTen[group], 0]));\n\n out.times(multiple);\n out.plus(chunk);\n\n posn += group;\n }\n\n return out;\n }\n\n /** @nocollapse */\n public static convertArray(values: (string|number)[]): Uint32Array {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Uint64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n\n /** @nocollapse */\n public static multiply(left: Uint64, right: Uint64): Uint64 {\n let rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n\n /** @nocollapse */\n public static add(left: Uint64, right: Uint64): Uint64 {\n let rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n\n/** @ignore */\nexport class Int64 extends BaseInt64 {\n public negate(): Int64 {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n\n if (this.buffer[0] == 0) { ++this.buffer[1]; }\n return this;\n }\n\n public times(other: Int64): Int64 {\n this._times(other);\n return this;\n }\n\n public plus(other: Int64): Int64 {\n this._plus(other);\n return this;\n }\n\n public lessThan(other: Int64): boolean {\n // force high bytes to be signed\n const this_high = this.buffer[1] << 0;\n const other_high = other.buffer[1] << 0;\n return this_high < other_high ||\n (this_high === other_high && this.buffer[0] < other.buffer[0]);\n }\n\n /** @nocollapse */\n public static from(val: any, out_buffer = new Uint32Array(2)): Int64 {\n return Int64.fromString(\n typeof(val) === 'string' ? val : val.toString(),\n out_buffer\n );\n }\n\n /** @nocollapse */\n public static fromNumber(num: number, out_buffer = new Uint32Array(2)): Int64 {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int64.fromString(num.toString(), out_buffer);\n }\n\n /** @nocollapse */\n public static fromString(str: string, out_buffer = new Uint32Array(2)): Int64 {\n // TODO: Assert that out_buffer is 0 and length = 2\n const negate = str.startsWith('-');\n const length = str.length;\n\n let out = new Int64(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int64(new Uint32Array([parseInt(str.substr(posn, group), 10), 0]));\n const multiple = new Int64(new Uint32Array([kPowersOfTen[group], 0]));\n\n out.times(multiple);\n out.plus(chunk);\n\n posn += group;\n }\n return negate ? out.negate() : out;\n }\n\n /** @nocollapse */\n public static convertArray(values: (string|number)[]): Uint32Array {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Int64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n\n /** @nocollapse */\n public static multiply(left: Int64, right: Int64): Int64 {\n let rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n\n /** @nocollapse */\n public static add(left: Int64, right: Int64): Int64 {\n let rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n\n/** @ignore */\nexport class Int128 {\n constructor (private buffer: Uint32Array) {\n // buffer[3] MSB (high)\n // buffer[2]\n // buffer[1]\n // buffer[0] LSB (low)\n }\n\n public high(): Int64 {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n }\n\n public low(): Int64 {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset, 2));\n }\n\n public negate(): Int128 {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n this.buffer[2] = ~this.buffer[2];\n this.buffer[3] = ~this.buffer[3];\n\n if (this.buffer[0] == 0) { ++this.buffer[1]; }\n if (this.buffer[1] == 0) { ++this.buffer[2]; }\n if (this.buffer[2] == 0) { ++this.buffer[3]; }\n return this;\n }\n\n public times(other: Int128): Int128 {\n // Break the left and right numbers into 32 bit chunks\n // so that we can multiply them without overflow.\n const L0 = new Uint64(new Uint32Array([this.buffer[3], 0]));\n const L1 = new Uint64(new Uint32Array([this.buffer[2], 0]));\n const L2 = new Uint64(new Uint32Array([this.buffer[1], 0]));\n const L3 = new Uint64(new Uint32Array([this.buffer[0], 0]));\n\n const R0 = new Uint64(new Uint32Array([other.buffer[3], 0]));\n const R1 = new Uint64(new Uint32Array([other.buffer[2], 0]));\n const R2 = new Uint64(new Uint32Array([other.buffer[1], 0]));\n const R3 = new Uint64(new Uint32Array([other.buffer[0], 0]));\n\n let product = Uint64.multiply(L3, R3);\n this.buffer[0] = product.low();\n\n let sum = new Uint64(new Uint32Array([product.high(), 0]));\n\n product = Uint64.multiply(L2, R3);\n sum.plus(product);\n\n product = Uint64.multiply(L3, R2);\n sum.plus(product);\n\n this.buffer[1] = sum.low();\n\n this.buffer[3] = (sum.lessThan(product) ? 1 : 0);\n\n this.buffer[2] = sum.high();\n let high = new Uint64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n\n high.plus(Uint64.multiply(L1, R3))\n .plus(Uint64.multiply(L2, R2))\n .plus(Uint64.multiply(L3, R1));\n this.buffer[3] += Uint64.multiply(L0, R3)\n .plus(Uint64.multiply(L1, R2))\n .plus(Uint64.multiply(L2, R1))\n .plus(Uint64.multiply(L3, R0)).low();\n\n return this;\n }\n\n public plus(other: Int128): Int128 {\n let sums = new Uint32Array(4);\n sums[3] = (this.buffer[3] + other.buffer[3]) >>> 0;\n sums[2] = (this.buffer[2] + other.buffer[2]) >>> 0;\n sums[1] = (this.buffer[1] + other.buffer[1]) >>> 0;\n sums[0] = (this.buffer[0] + other.buffer[0]) >>> 0;\n\n if (sums[0] < (this.buffer[0] >>> 0)) {\n ++sums[1];\n }\n if (sums[1] < (this.buffer[1] >>> 0)) {\n ++sums[2];\n }\n if (sums[2] < (this.buffer[2] >>> 0)) {\n ++sums[3];\n }\n\n this.buffer[3] = sums[3];\n this.buffer[2] = sums[2];\n this.buffer[1] = sums[1];\n this.buffer[0] = sums[0];\n\n return this;\n }\n\n public hex(): string {\n return `${intAsHex(this.buffer[3])} ${intAsHex(this.buffer[2])} ${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n\n /** @nocollapse */\n public static multiply(left: Int128, right: Int128): Int128 {\n let rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n\n /** @nocollapse */\n public static add(left: Int128, right: Int128): Int128 {\n let rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n\n /** @nocollapse */\n public static from(val: any, out_buffer = new Uint32Array(4)): Int128 {\n return Int128.fromString(\n typeof(val) === 'string' ? val : val.toString(),\n out_buffer\n );\n }\n\n /** @nocollapse */\n public static fromNumber(num: number, out_buffer = new Uint32Array(4)): Int128 {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int128.fromString(num.toString(), out_buffer);\n }\n\n /** @nocollapse */\n public static fromString(str: string, out_buffer = new Uint32Array(4)): Int128 {\n // TODO: Assert that out_buffer is 0 and length = 4\n const negate = str.startsWith('-');\n const length = str.length;\n\n let out = new Int128(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int128(new Uint32Array([parseInt(str.substr(posn, group), 10), 0, 0, 0]));\n const multiple = new Int128(new Uint32Array([kPowersOfTen[group], 0, 0, 0]));\n\n out.times(multiple);\n out.plus(chunk);\n\n posn += group;\n }\n\n return negate ? out.negate() : out;\n }\n\n /** @nocollapse */\n public static convertArray(values: (string|number)[]): Uint32Array {\n // TODO: Distinguish between string and number at compile-time\n const data = new Uint32Array(values.length * 4);\n for (let i = -1, n = values.length; ++i < n;) {\n Int128.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 4 * 4 * i, 4));\n }\n return data;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport * as type from '../type';\nimport { Field } from '../schema';\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\nimport { Visitor } from '../visitor';\nimport { packBools } from '../util/bit';\nimport { encodeUtf8 } from '../util/utf8';\nimport { Int64, Int128 } from '../util/int';\nimport { UnionMode, DateUnit } from '../enum';\nimport { toArrayBufferView } from '../util/buffer';\nimport { BufferRegion, FieldNode } from '../ipc/metadata/message';\n\n/** @ignore */\nexport interface VectorLoader extends Visitor {\n visit(node: Field | T): Data;\n visitMany(nodes: (Field | T)[]): Data[];\n}\n\n/** @ignore */\nexport class VectorLoader extends Visitor {\n private bytes: Uint8Array;\n private nodes: FieldNode[];\n private nodesIndex: number = -1;\n private buffers: BufferRegion[];\n private buffersIndex: number = -1;\n private dictionaries: Map>;\n constructor(bytes: Uint8Array, nodes: FieldNode[], buffers: BufferRegion[], dictionaries: Map>) {\n super();\n this.bytes = bytes;\n this.nodes = nodes;\n this.buffers = buffers;\n this.dictionaries = dictionaries;\n }\n\n public visit(node: Field | T): Data {\n return super.visit(node instanceof Field ? node.type : node);\n }\n\n public visitNull (type: T, { length, } = this.nextFieldNode()) { return Data.Null(type, 0, length); }\n public visitBool (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Bool(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitInt (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Int(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitFloat (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Float(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitUtf8 (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Utf8(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.readData(type)); }\n public visitBinary (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Binary(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.readData(type)); }\n public visitFixedSizeBinary (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.FixedSizeBinary(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitDate (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Date(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitTimestamp (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Timestamp(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitTime (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Time(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitDecimal (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Decimal(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitList (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.List(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.visit(type.children[0])); }\n public visitStruct (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Struct(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.visitMany(type.children)); }\n public visitUnion (type: T ) { return type.mode === UnionMode.Sparse ? this.visitSparseUnion(type as type.SparseUnion) : this.visitDenseUnion(type as type.DenseUnion); }\n public visitDenseUnion (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Union(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readTypeIds(type), this.readOffsets(type), this.visitMany(type.children)); }\n public visitSparseUnion (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Union(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readTypeIds(type), this.visitMany(type.children)); }\n public visitDictionary (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Dictionary(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type.indices), this.readDictionary(type)); }\n public visitInterval (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Interval(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n public visitFixedSizeList (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.FixedSizeList(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.visit(type.children[0])); }\n public visitMap (type: T, { length, nullCount } = this.nextFieldNode()) { return Data.Map(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.visit(type.children[0])); }\n\n protected nextFieldNode() { return this.nodes[++this.nodesIndex]; }\n protected nextBufferRange() { return this.buffers[++this.buffersIndex]; }\n protected readNullBitmap(type: T, nullCount: number, buffer = this.nextBufferRange()) {\n return nullCount > 0 && this.readData(type, buffer) || new Uint8Array(0);\n }\n protected readOffsets(type: T, buffer?: BufferRegion) { return this.readData(type, buffer); }\n protected readTypeIds(type: T, buffer?: BufferRegion) { return this.readData(type, buffer); }\n protected readData(_type: T, { length, offset } = this.nextBufferRange()) {\n return this.bytes.subarray(offset, offset + length);\n }\n protected readDictionary(type: T): Vector {\n return this.dictionaries.get(type.id)!;\n }\n}\n\n/** @ignore */\nexport class JSONVectorLoader extends VectorLoader {\n private sources: any[][];\n constructor(sources: any[][], nodes: FieldNode[], buffers: BufferRegion[], dictionaries: Map>) {\n super(new Uint8Array(0), nodes, buffers, dictionaries);\n this.sources = sources;\n }\n protected readNullBitmap(_type: T, nullCount: number, { offset } = this.nextBufferRange()) {\n return nullCount <= 0 ? new Uint8Array(0) : packBools(this.sources[offset]);\n }\n protected readOffsets(_type: T, { offset } = this.nextBufferRange()) {\n return toArrayBufferView(Uint8Array, toArrayBufferView(Int32Array, this.sources[offset]));\n }\n protected readTypeIds(type: T, { offset } = this.nextBufferRange()) {\n return toArrayBufferView(Uint8Array, toArrayBufferView(type.ArrayType, this.sources[offset]));\n }\n protected readData(type: T, { offset } = this.nextBufferRange()) {\n const { sources } = this;\n if (DataType.isTimestamp(type)) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset] as string[]));\n } else if ((DataType.isInt(type) || DataType.isTime(type)) && type.bitWidth === 64) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset] as string[]));\n } else if (DataType.isDate(type) && type.unit === DateUnit.MILLISECOND) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset] as string[]));\n } else if (DataType.isDecimal(type)) {\n return toArrayBufferView(Uint8Array, Int128.convertArray(sources[offset] as string[]));\n } else if (DataType.isBinary(type) || DataType.isFixedSizeBinary(type)) {\n return binaryDataFromJSON(sources[offset] as string[]);\n } else if (DataType.isBool(type)) {\n return packBools(sources[offset] as number[]);\n } else if (DataType.isUtf8(type)) {\n return encodeUtf8((sources[offset] as string[]).join(''));\n }\n return toArrayBufferView(Uint8Array, toArrayBufferView(type.ArrayType, sources[offset].map((x) => +x)));\n }\n}\n\n/** @ignore */\nfunction binaryDataFromJSON(values: string[]) {\n // \"DATA\": [\"49BC7D5B6C47D2\",\"3F5FB6D9322026\"]\n // There are definitely more efficient ways to do this... but it gets the\n // job done.\n const joined = values.join('');\n const data = new Uint8Array(joined.length / 2);\n for (let i = 0; i < joined.length; i += 2) {\n data[i >> 1] = parseInt(joined.substr(i, 2), 16);\n }\n return data;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { flatbuffers } from 'flatbuffers';\nimport Long = flatbuffers.Long;\nimport Builder = flatbuffers.Builder;\nimport * as Schema_ from '../fb/Schema';\n\nimport * as type from '../type';\nimport { Visitor } from '../visitor';\n\nimport Null = Schema_.org.apache.arrow.flatbuf.Null;\nimport Int = Schema_.org.apache.arrow.flatbuf.Int;\nimport FloatingPoint = Schema_.org.apache.arrow.flatbuf.FloatingPoint;\nimport Binary = Schema_.org.apache.arrow.flatbuf.Binary;\nimport Bool = Schema_.org.apache.arrow.flatbuf.Bool;\nimport Utf8 = Schema_.org.apache.arrow.flatbuf.Utf8;\nimport Decimal = Schema_.org.apache.arrow.flatbuf.Decimal;\nimport Date = Schema_.org.apache.arrow.flatbuf.Date;\nimport Time = Schema_.org.apache.arrow.flatbuf.Time;\nimport Timestamp = Schema_.org.apache.arrow.flatbuf.Timestamp;\nimport Interval = Schema_.org.apache.arrow.flatbuf.Interval;\nimport List = Schema_.org.apache.arrow.flatbuf.List;\nimport Struct = Schema_.org.apache.arrow.flatbuf.Struct_;\nimport Union = Schema_.org.apache.arrow.flatbuf.Union;\nimport DictionaryEncoding = Schema_.org.apache.arrow.flatbuf.DictionaryEncoding;\nimport FixedSizeBinary = Schema_.org.apache.arrow.flatbuf.FixedSizeBinary;\nimport FixedSizeList = Schema_.org.apache.arrow.flatbuf.FixedSizeList;\nimport Map_ = Schema_.org.apache.arrow.flatbuf.Map;\n\n/** @ignore */\nexport interface TypeAssembler extends Visitor {\n visit(node: T, builder: Builder): number | undefined;\n}\n\n/** @ignore */\nexport class TypeAssembler extends Visitor {\n public visit(node: T, builder: Builder): number | undefined {\n return (node == null || builder == null) ? undefined : super.visit(node, builder);\n }\n public visitNull(_node: T, b: Builder) {\n Null.startNull(b);\n return Null.endNull(b);\n }\n public visitInt(node: T, b: Builder) {\n Int.startInt(b);\n Int.addBitWidth(b, node.bitWidth);\n Int.addIsSigned(b, node.isSigned);\n return Int.endInt(b);\n }\n public visitFloat(node: T, b: Builder) {\n FloatingPoint.startFloatingPoint(b);\n FloatingPoint.addPrecision(b, node.precision);\n return FloatingPoint.endFloatingPoint(b);\n }\n public visitBinary(_node: T, b: Builder) {\n Binary.startBinary(b);\n return Binary.endBinary(b);\n }\n public visitBool(_node: T, b: Builder) {\n Bool.startBool(b);\n return Bool.endBool(b);\n }\n public visitUtf8(_node: T, b: Builder) {\n Utf8.startUtf8(b);\n return Utf8.endUtf8(b);\n }\n public visitDecimal(node: T, b: Builder) {\n Decimal.startDecimal(b);\n Decimal.addScale(b, node.scale);\n Decimal.addPrecision(b, node.precision);\n return Decimal.endDecimal(b);\n }\n public visitDate(node: T, b: Builder) {\n Date.startDate(b);\n Date.addUnit(b, node.unit);\n return Date.endDate(b);\n }\n public visitTime(node: T, b: Builder) {\n Time.startTime(b);\n Time.addUnit(b, node.unit);\n Time.addBitWidth(b, node.bitWidth);\n return Time.endTime(b);\n }\n public visitTimestamp(node: T, b: Builder) {\n const timezone = (node.timezone && b.createString(node.timezone)) || undefined;\n Timestamp.startTimestamp(b);\n Timestamp.addUnit(b, node.unit);\n if (timezone !== undefined) {\n Timestamp.addTimezone(b, timezone);\n }\n return Timestamp.endTimestamp(b);\n }\n public visitInterval(node: T, b: Builder) {\n Interval.startInterval(b);\n Interval.addUnit(b, node.unit);\n return Interval.endInterval(b);\n }\n public visitList(_node: T, b: Builder) {\n List.startList(b);\n return List.endList(b);\n }\n public visitStruct(_node: T, b: Builder) {\n Struct.startStruct_(b);\n return Struct.endStruct_(b);\n }\n public visitUnion(node: T, b: Builder) {\n Union.startTypeIdsVector(b, node.typeIds.length);\n const typeIds = Union.createTypeIdsVector(b, node.typeIds);\n Union.startUnion(b);\n Union.addMode(b, node.mode);\n Union.addTypeIds(b, typeIds);\n return Union.endUnion(b);\n }\n public visitDictionary(node: T, b: Builder) {\n const indexType = this.visit(node.indices, b);\n DictionaryEncoding.startDictionaryEncoding(b);\n DictionaryEncoding.addId(b, new Long(node.id, 0));\n DictionaryEncoding.addIsOrdered(b, node.isOrdered);\n if (indexType !== undefined) {\n DictionaryEncoding.addIndexType(b, indexType);\n }\n return DictionaryEncoding.endDictionaryEncoding(b);\n }\n public visitFixedSizeBinary(node: T, b: Builder) {\n FixedSizeBinary.startFixedSizeBinary(b);\n FixedSizeBinary.addByteWidth(b, node.byteWidth);\n return FixedSizeBinary.endFixedSizeBinary(b);\n }\n public visitFixedSizeList(node: T, b: Builder) {\n FixedSizeList.startFixedSizeList(b);\n FixedSizeList.addListSize(b, node.listSize);\n return FixedSizeList.endFixedSizeList(b);\n }\n public visitMap(node: T, b: Builder) {\n Map_.startMap(b);\n Map_.addKeysSorted(b, node.keysSorted);\n return Map_.endMap(b);\n }\n}\n\n/** @ignore */\nexport const instance = new TypeAssembler();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Schema, Field } from '../../schema';\nimport {\n DataType, Dictionary, TimeBitWidth,\n Utf8, Binary, Decimal, FixedSizeBinary,\n List, FixedSizeList, Map_, Struct, Union,\n Bool, Null, Int, Float, Date_, Time, Interval, Timestamp, IntBitWidth, Int32, TKeys,\n} from '../../type';\n\nimport { DictionaryBatch, RecordBatch, FieldNode, BufferRegion } from './message';\nimport { TimeUnit, Precision, IntervalUnit, UnionMode, DateUnit } from '../../enum';\n\n/** @ignore */\nexport function schemaFromJSON(_schema: any, dictionaries: Map = new Map()) {\n return new Schema(\n schemaFieldsFromJSON(_schema, dictionaries),\n customMetadataFromJSON(_schema['customMetadata']),\n dictionaries\n );\n}\n\n/** @ignore */\nexport function recordBatchFromJSON(b: any) {\n return new RecordBatch(\n b['count'],\n fieldNodesFromJSON(b['columns']),\n buffersFromJSON(b['columns'])\n );\n}\n\n/** @ignore */\nexport function dictionaryBatchFromJSON(b: any) {\n return new DictionaryBatch(\n recordBatchFromJSON(b['data']),\n b['id'], b['isDelta']\n );\n}\n\n/** @ignore */\nfunction schemaFieldsFromJSON(_schema: any, dictionaries?: Map) {\n return (_schema['fields'] || []).filter(Boolean).map((f: any) => Field.fromJSON(f, dictionaries));\n}\n\n/** @ignore */\nfunction fieldChildrenFromJSON(_field: any, dictionaries?: Map): Field[] {\n return (_field['children'] || []).filter(Boolean).map((f: any) => Field.fromJSON(f, dictionaries));\n}\n\n/** @ignore */\nfunction fieldNodesFromJSON(xs: any[]): FieldNode[] {\n return (xs || []).reduce((fieldNodes, column: any) => [\n ...fieldNodes,\n new FieldNode(\n column['count'],\n nullCountFromJSON(column['VALIDITY'])\n ),\n ...fieldNodesFromJSON(column['children'])\n ], [] as FieldNode[]);\n}\n\n/** @ignore */\nfunction buffersFromJSON(xs: any[], buffers: BufferRegion[] = []): BufferRegion[] {\n for (let i = -1, n = (xs || []).length; ++i < n;) {\n const column = xs[i];\n column['VALIDITY'] && buffers.push(new BufferRegion(buffers.length, column['VALIDITY'].length));\n column['TYPE'] && buffers.push(new BufferRegion(buffers.length, column['TYPE'].length));\n column['OFFSET'] && buffers.push(new BufferRegion(buffers.length, column['OFFSET'].length));\n column['DATA'] && buffers.push(new BufferRegion(buffers.length, column['DATA'].length));\n buffers = buffersFromJSON(column['children'], buffers);\n }\n return buffers;\n}\n\n/** @ignore */\nfunction nullCountFromJSON(validity: number[]) {\n return (validity || []).reduce((sum, val) => sum + +(val === 0), 0);\n}\n\n/** @ignore */\nexport function fieldFromJSON(_field: any, dictionaries?: Map) {\n\n let id: number;\n let keys: TKeys | null;\n let field: Field | void;\n let dictMeta: any;\n let type: DataType;\n let dictType: Dictionary;\n\n // If no dictionary encoding\n if (!dictionaries || !(dictMeta = _field['dictionary'])) {\n type = typeFromJSON(_field, fieldChildrenFromJSON(_field, dictionaries));\n field = new Field(_field['name'], type, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n // tslint:disable\n // If dictionary encoded and the first time we've seen this dictionary id, decode\n // the data type and child fields, then wrap in a Dictionary type and insert the\n // data type into the dictionary types map.\n else if (!dictionaries.has(id = dictMeta['id'])) {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta['indexType']) ? indexTypeFromJSON(keys) as TKeys : new Int32();\n dictionaries.set(id, type = typeFromJSON(_field, fieldChildrenFromJSON(_field, dictionaries)));\n dictType = new Dictionary(type, keys, id, dictMeta['isOrdered']);\n field = new Field(_field['name'], dictType, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n // If dictionary encoded, and have already seen this dictionary Id in the schema, then reuse the\n // data type and wrap in a new Dictionary type and field.\n else {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta['indexType']) ? indexTypeFromJSON(keys) as TKeys : new Int32();\n dictType = new Dictionary(dictionaries.get(id)!, keys, id, dictMeta['isOrdered']);\n field = new Field(_field['name'], dictType, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n return field || null;\n}\n\n/** @ignore */\nfunction customMetadataFromJSON(_metadata?: object) {\n return new Map(Object.entries(_metadata || {}));\n}\n\n/** @ignore */\nfunction indexTypeFromJSON(_type: any) {\n return new Int(_type['isSigned'], _type['bitWidth']);\n}\n\n/** @ignore */\nfunction typeFromJSON(f: any, children?: Field[]): DataType {\n\n const typeId = f['type']['name'];\n\n switch (typeId) {\n case 'NONE': return new Null();\n case 'null': return new Null();\n case 'binary': return new Binary();\n case 'utf8': return new Utf8();\n case 'bool': return new Bool();\n case 'list': return new List((children || [])[0]);\n case 'struct': return new Struct(children || []);\n case 'struct_': return new Struct(children || []);\n }\n\n switch (typeId) {\n case 'int': {\n const t = f['type'];\n return new Int(t['isSigned'], t['bitWidth'] as IntBitWidth);\n }\n case 'floatingpoint': {\n const t = f['type'];\n return new Float(Precision[t['precision']] as any);\n }\n case 'decimal': {\n const t = f['type'];\n return new Decimal(t['scale'], t['precision']);\n }\n case 'date': {\n const t = f['type'];\n return new Date_(DateUnit[t['unit']] as any);\n }\n case 'time': {\n const t = f['type'];\n return new Time(TimeUnit[t['unit']] as any, t['bitWidth'] as TimeBitWidth);\n }\n case 'timestamp': {\n const t = f['type'];\n return new Timestamp(TimeUnit[t['unit']] as any, t['timezone']);\n }\n case 'interval': {\n const t = f['type'];\n return new Interval(IntervalUnit[t['unit']] as any);\n }\n case 'union': {\n const t = f['type'];\n return new Union(UnionMode[t['mode']] as any, (t['typeIds'] || []), children || []);\n }\n case 'fixedsizebinary': {\n const t = f['type'];\n return new FixedSizeBinary(t['byteWidth']);\n }\n case 'fixedsizelist': {\n const t = f['type'];\n return new FixedSizeList(t['listSize'], (children || [])[0]);\n }\n case 'map': {\n const t = f['type'];\n return new Map_((children || [])[0], t['keysSorted']);\n }\n }\n throw new Error(`Unrecognized type: \"${typeId}\"`);\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { flatbuffers } from 'flatbuffers';\nimport * as Schema_ from '../../fb/Schema';\nimport * as Message_ from '../../fb/Message';\n\nimport { Schema, Field } from '../../schema';\nimport { toUint8Array } from '../../util/buffer';\nimport { ArrayBufferViewInput } from '../../util/buffer';\nimport { MessageHeader, MetadataVersion } from '../../enum';\nimport { instance as typeAssembler } from '../../visitor/typeassembler';\nimport { fieldFromJSON, schemaFromJSON, recordBatchFromJSON, dictionaryBatchFromJSON } from './json';\n\nimport Long = flatbuffers.Long;\nimport Builder = flatbuffers.Builder;\nimport ByteBuffer = flatbuffers.ByteBuffer;\nimport _Int = Schema_.org.apache.arrow.flatbuf.Int;\nimport Type = Schema_.org.apache.arrow.flatbuf.Type;\nimport _Field = Schema_.org.apache.arrow.flatbuf.Field;\nimport _Schema = Schema_.org.apache.arrow.flatbuf.Schema;\nimport _Buffer = Schema_.org.apache.arrow.flatbuf.Buffer;\nimport _Message = Message_.org.apache.arrow.flatbuf.Message;\nimport _KeyValue = Schema_.org.apache.arrow.flatbuf.KeyValue;\nimport _FieldNode = Message_.org.apache.arrow.flatbuf.FieldNode;\nimport _Endianness = Schema_.org.apache.arrow.flatbuf.Endianness;\nimport _RecordBatch = Message_.org.apache.arrow.flatbuf.RecordBatch;\nimport _DictionaryBatch = Message_.org.apache.arrow.flatbuf.DictionaryBatch;\nimport _DictionaryEncoding = Schema_.org.apache.arrow.flatbuf.DictionaryEncoding;\n\nimport {\n DataType, Dictionary, TimeBitWidth,\n Utf8, Binary, Decimal, FixedSizeBinary,\n List, FixedSizeList, Map_, Struct, Union,\n Bool, Null, Int, Float, Date_, Time, Interval, Timestamp, IntBitWidth, Int32, TKeys,\n} from '../../type';\n\n/**\n * @ignore\n * @private\n **/\nexport class Message {\n\n /** @nocollapse */\n public static fromJSON(msg: any, headerType: T): Message {\n const message = new Message(0, MetadataVersion.V4, headerType);\n message._createHeader = messageHeaderFromJSON(msg, headerType);\n return message;\n }\n\n /** @nocollapse */\n public static decode(buf: ArrayBufferViewInput) {\n buf = new ByteBuffer(toUint8Array(buf));\n const _message = _Message.getRootAsMessage(buf);\n const bodyLength: Long = _message.bodyLength()!;\n const version: MetadataVersion = _message.version();\n const headerType: MessageHeader = _message.headerType();\n const message = new Message(bodyLength, version, headerType);\n message._createHeader = decodeMessageHeader(_message, headerType);\n return message;\n }\n\n /** @nocollapse */\n public static encode(message: Message) {\n let b = new Builder(), headerOffset = -1;\n if (message.isSchema()) {\n headerOffset = Schema.encode(b, message.header() as Schema);\n } else if (message.isRecordBatch()) {\n headerOffset = RecordBatch.encode(b, message.header() as RecordBatch);\n } else if (message.isDictionaryBatch()) {\n headerOffset = DictionaryBatch.encode(b, message.header() as DictionaryBatch);\n }\n _Message.startMessage(b);\n _Message.addVersion(b, MetadataVersion.V4);\n _Message.addHeader(b, headerOffset);\n _Message.addHeaderType(b, message.headerType);\n _Message.addBodyLength(b, new Long(message.bodyLength, 0));\n _Message.finishMessageBuffer(b, _Message.endMessage(b));\n return b.asUint8Array();\n }\n\n /** @nocollapse */\n public static from(header: Schema | RecordBatch | DictionaryBatch, bodyLength = 0) {\n if (header instanceof Schema) {\n return new Message(0, MetadataVersion.V4, MessageHeader.Schema, header);\n }\n if (header instanceof RecordBatch) {\n return new Message(bodyLength, MetadataVersion.V4, MessageHeader.RecordBatch, header);\n }\n if (header instanceof DictionaryBatch) {\n return new Message(bodyLength, MetadataVersion.V4, MessageHeader.DictionaryBatch, header);\n }\n throw new Error(`Unrecognized Message header: ${header}`);\n }\n\n // @ts-ignore\n public body: Uint8Array;\n protected _headerType: T;\n protected _bodyLength: number;\n protected _version: MetadataVersion;\n public get type() { return this.headerType; }\n public get version() { return this._version; }\n public get headerType() { return this._headerType; }\n public get bodyLength() { return this._bodyLength; }\n // @ts-ignore\n protected _createHeader: MessageHeaderDecoder;\n public header() { return this._createHeader(); }\n public isSchema(): this is Message { return this.headerType === MessageHeader.Schema; }\n public isRecordBatch(): this is Message { return this.headerType === MessageHeader.RecordBatch; }\n public isDictionaryBatch(): this is Message { return this.headerType === MessageHeader.DictionaryBatch; }\n\n constructor(bodyLength: Long | number, version: MetadataVersion, headerType: T, header?: any) {\n this._version = version;\n this._headerType = headerType;\n this.body = new Uint8Array(0);\n header && (this._createHeader = () => header);\n this._bodyLength = typeof bodyLength === 'number' ? bodyLength : bodyLength.low;\n }\n}\n\n/**\n * @ignore\n * @private\n **/\nexport class RecordBatch {\n protected _length: number;\n protected _nodes: FieldNode[];\n protected _buffers: BufferRegion[];\n public get nodes() { return this._nodes; }\n public get length() { return this._length; }\n public get buffers() { return this._buffers; }\n constructor(length: Long | number, nodes: FieldNode[], buffers: BufferRegion[]) {\n this._nodes = nodes;\n this._buffers = buffers;\n this._length = typeof length === 'number' ? length : length.low;\n }\n}\n\n/**\n * @ignore\n * @private\n **/\nexport class DictionaryBatch {\n\n protected _id: number;\n protected _isDelta: boolean;\n protected _data: RecordBatch;\n public get id() { return this._id; }\n public get data() { return this._data; }\n public get isDelta() { return this._isDelta; }\n public get length(): number { return this.data.length; }\n public get nodes(): FieldNode[] { return this.data.nodes; }\n public get buffers(): BufferRegion[] { return this.data.buffers; }\n\n constructor(data: RecordBatch, id: Long | number, isDelta: boolean = false) {\n this._data = data;\n this._isDelta = isDelta;\n this._id = typeof id === 'number' ? id : id.low;\n }\n}\n\n/**\n * @ignore\n * @private\n **/\nexport class BufferRegion {\n public offset: number;\n public length: number;\n constructor(offset: Long | number, length: Long | number) {\n this.offset = typeof offset === 'number' ? offset : offset.low;\n this.length = typeof length === 'number' ? length : length.low;\n }\n}\n\n/**\n * @ignore\n * @private\n **/\nexport class FieldNode {\n public length: number;\n public nullCount: number;\n constructor(length: Long | number, nullCount: Long | number) {\n this.length = typeof length === 'number' ? length : length.low;\n this.nullCount = typeof nullCount === 'number' ? nullCount : nullCount.low;\n }\n}\n\n/** @ignore */\nfunction messageHeaderFromJSON(message: any, type: MessageHeader) {\n return (() => {\n switch (type) {\n case MessageHeader.Schema: return Schema.fromJSON(message);\n case MessageHeader.RecordBatch: return RecordBatch.fromJSON(message);\n case MessageHeader.DictionaryBatch: return DictionaryBatch.fromJSON(message);\n }\n throw new Error(`Unrecognized Message type: { name: ${MessageHeader[type]}, type: ${type} }`);\n }) as MessageHeaderDecoder;\n}\n\n/** @ignore */\nfunction decodeMessageHeader(message: _Message, type: MessageHeader) {\n return (() => {\n switch (type) {\n case MessageHeader.Schema: return Schema.decode(message.header(new _Schema())!);\n case MessageHeader.RecordBatch: return RecordBatch.decode(message.header(new _RecordBatch())!, message.version());\n case MessageHeader.DictionaryBatch: return DictionaryBatch.decode(message.header(new _DictionaryBatch())!, message.version());\n }\n throw new Error(`Unrecognized Message type: { name: ${MessageHeader[type]}, type: ${type} }`);\n }) as MessageHeaderDecoder;\n}\n\nField['encode'] = encodeField;\nField['decode'] = decodeField;\nField['fromJSON'] = fieldFromJSON;\n\nSchema['encode'] = encodeSchema;\nSchema['decode'] = decodeSchema;\nSchema['fromJSON'] = schemaFromJSON;\n\nRecordBatch['encode'] = encodeRecordBatch;\nRecordBatch['decode'] = decodeRecordBatch;\nRecordBatch['fromJSON'] = recordBatchFromJSON;\n\nDictionaryBatch['encode'] = encodeDictionaryBatch;\nDictionaryBatch['decode'] = decodeDictionaryBatch;\nDictionaryBatch['fromJSON'] = dictionaryBatchFromJSON;\n\nFieldNode['encode'] = encodeFieldNode;\nFieldNode['decode'] = decodeFieldNode;\n\nBufferRegion['encode'] = encodeBufferRegion;\nBufferRegion['decode'] = decodeBufferRegion;\n\ndeclare module '../../schema' {\n namespace Field {\n export { encodeField as encode };\n export { decodeField as decode };\n export { fieldFromJSON as fromJSON };\n }\n namespace Schema {\n export { encodeSchema as encode };\n export { decodeSchema as decode };\n export { schemaFromJSON as fromJSON };\n }\n}\n\ndeclare module './message' {\n namespace RecordBatch {\n export { encodeRecordBatch as encode };\n export { decodeRecordBatch as decode };\n export { recordBatchFromJSON as fromJSON };\n }\n namespace DictionaryBatch {\n export { encodeDictionaryBatch as encode };\n export { decodeDictionaryBatch as decode };\n export { dictionaryBatchFromJSON as fromJSON };\n }\n namespace FieldNode {\n export { encodeFieldNode as encode };\n export { decodeFieldNode as decode };\n }\n namespace BufferRegion {\n export { encodeBufferRegion as encode };\n export { decodeBufferRegion as decode };\n }\n}\n\n/** @ignore */\nfunction decodeSchema(_schema: _Schema, dictionaries: Map = new Map()) {\n const fields = decodeSchemaFields(_schema, dictionaries);\n return new Schema(fields, decodeCustomMetadata(_schema), dictionaries);\n}\n\n/** @ignore */\nfunction decodeRecordBatch(batch: _RecordBatch, version = MetadataVersion.V4) {\n return new RecordBatch(batch.length(), decodeFieldNodes(batch), decodeBuffers(batch, version));\n}\n\n/** @ignore */\nfunction decodeDictionaryBatch(batch: _DictionaryBatch, version = MetadataVersion.V4) {\n return new DictionaryBatch(RecordBatch.decode(batch.data()!, version), batch.id(), batch.isDelta());\n}\n\n/** @ignore */\nfunction decodeBufferRegion(b: _Buffer) {\n return new BufferRegion(b.offset(), b.length());\n}\n\n/** @ignore */\nfunction decodeFieldNode(f: _FieldNode) {\n return new FieldNode(f.length(), f.nullCount());\n}\n\n/** @ignore */\nfunction decodeFieldNodes(batch: _RecordBatch) {\n const nodes = [] as FieldNode[];\n for (let f, i = -1, j = -1, n = batch.nodesLength(); ++i < n;) {\n if (f = batch.nodes(i)) {\n nodes[++j] = FieldNode.decode(f);\n }\n }\n return nodes;\n}\n\n/** @ignore */\nfunction decodeBuffers(batch: _RecordBatch, version: MetadataVersion) {\n const bufferRegions = [] as BufferRegion[];\n for (let b, i = -1, j = -1, n = batch.buffersLength(); ++i < n;) {\n if (b = batch.buffers(i)) {\n // If this Arrow buffer was written before version 4,\n // advance the buffer's bb_pos 8 bytes to skip past\n // the now-removed page_id field\n if (version < MetadataVersion.V4) {\n b.bb_pos += (8 * (i + 1));\n }\n bufferRegions[++j] = BufferRegion.decode(b);\n }\n }\n return bufferRegions;\n}\n\n/** @ignore */\nfunction decodeSchemaFields(schema: _Schema, dictionaries?: Map) {\n const fields = [] as Field[];\n for (let f, i = -1, j = -1, n = schema.fieldsLength(); ++i < n;) {\n if (f = schema.fields(i)) {\n fields[++j] = Field.decode(f, dictionaries);\n }\n }\n return fields;\n}\n\n/** @ignore */\nfunction decodeFieldChildren(field: _Field, dictionaries?: Map): Field[] {\n const children = [] as Field[];\n for (let f, i = -1, j = -1, n = field.childrenLength(); ++i < n;) {\n if (f = field.children(i)) {\n children[++j] = Field.decode(f, dictionaries);\n }\n }\n return children;\n}\n\n/** @ignore */\nfunction decodeField(f: _Field, dictionaries?: Map) {\n\n let id: number;\n let field: Field | void;\n let type: DataType;\n let keys: _Int | TKeys | null;\n let dictType: Dictionary;\n let dictMeta: _DictionaryEncoding | null;\n\n // If no dictionary encoding\n if (!dictionaries || !(dictMeta = f.dictionary())) {\n type = decodeFieldType(f, decodeFieldChildren(f, dictionaries));\n field = new Field(f.name()!, type, f.nullable(), decodeCustomMetadata(f));\n }\n // tslint:disable\n // If dictionary encoded and the first time we've seen this dictionary id, decode\n // the data type and child fields, then wrap in a Dictionary type and insert the\n // data type into the dictionary types map.\n else if (!dictionaries.has(id = dictMeta.id().low)) {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta.indexType()) ? decodeIndexType(keys) as TKeys : new Int32();\n dictionaries.set(id, type = decodeFieldType(f, decodeFieldChildren(f, dictionaries)));\n dictType = new Dictionary(type, keys, id, dictMeta.isOrdered());\n field = new Field(f.name()!, dictType, f.nullable(), decodeCustomMetadata(f));\n }\n // If dictionary encoded, and have already seen this dictionary Id in the schema, then reuse the\n // data type and wrap in a new Dictionary type and field.\n else {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta.indexType()) ? decodeIndexType(keys) as TKeys : new Int32();\n dictType = new Dictionary(dictionaries.get(id)!, keys, id, dictMeta.isOrdered());\n field = new Field(f.name()!, dictType, f.nullable(), decodeCustomMetadata(f));\n }\n return field || null;\n}\n\n/** @ignore */\nfunction decodeCustomMetadata(parent?: _Schema | _Field | null) {\n const data = new Map();\n if (parent) {\n for (let entry, key, i = -1, n = parent.customMetadataLength() | 0; ++i < n;) {\n if ((entry = parent.customMetadata(i)) && (key = entry.key()) != null) {\n data.set(key, entry.value()!);\n }\n }\n }\n return data;\n}\n\n/** @ignore */\nfunction decodeIndexType(_type: _Int) {\n return new Int(_type.isSigned(), _type.bitWidth() as IntBitWidth);\n}\n\n/** @ignore */\nfunction decodeFieldType(f: _Field, children?: Field[]): DataType {\n\n const typeId = f.typeType();\n\n switch (typeId) {\n case Type.NONE: return new Null();\n case Type.Null: return new Null();\n case Type.Binary: return new Binary();\n case Type.Utf8: return new Utf8();\n case Type.Bool: return new Bool();\n case Type.List: return new List((children || [])[0]);\n case Type.Struct_: return new Struct(children || []);\n }\n\n switch (typeId) {\n case Type.Int: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Int())!;\n return new Int(t.isSigned(), t.bitWidth());\n }\n case Type.FloatingPoint: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.FloatingPoint())!;\n return new Float(t.precision());\n }\n case Type.Decimal: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Decimal())!;\n return new Decimal(t.scale(), t.precision());\n }\n case Type.Date: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Date())!;\n return new Date_(t.unit());\n }\n case Type.Time: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Time())!;\n return new Time(t.unit(), t.bitWidth() as TimeBitWidth);\n }\n case Type.Timestamp: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Timestamp())!;\n return new Timestamp(t.unit(), t.timezone());\n }\n case Type.Interval: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Interval())!;\n return new Interval(t.unit());\n }\n case Type.Union: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Union())!;\n return new Union(t.mode(), t.typeIdsArray() || [], children || []);\n }\n case Type.FixedSizeBinary: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.FixedSizeBinary())!;\n return new FixedSizeBinary(t.byteWidth());\n }\n case Type.FixedSizeList: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.FixedSizeList())!;\n return new FixedSizeList(t.listSize(), (children || [])[0]);\n }\n case Type.Map: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Map())!;\n return new Map_((children || [])[0], t.keysSorted());\n }\n }\n throw new Error(`Unrecognized type: \"${Type[typeId]}\" (${typeId})`);\n}\n\n/** @ignore */\nfunction encodeSchema(b: Builder, schema: Schema) {\n\n const fieldOffsets = schema.fields.map((f) => Field.encode(b, f));\n\n _Schema.startFieldsVector(b, fieldOffsets.length);\n\n const fieldsVectorOffset = _Schema.createFieldsVector(b, fieldOffsets);\n\n const metadataOffset = !(schema.metadata && schema.metadata.size > 0) ? -1 :\n _Schema.createCustomMetadataVector(b, [...schema.metadata].map(([k, v]) => {\n const key = b.createString(`${k}`);\n const val = b.createString(`${v}`);\n _KeyValue.startKeyValue(b);\n _KeyValue.addKey(b, key);\n _KeyValue.addValue(b, val);\n return _KeyValue.endKeyValue(b);\n }));\n\n _Schema.startSchema(b);\n _Schema.addFields(b, fieldsVectorOffset);\n _Schema.addEndianness(b, platformIsLittleEndian ? _Endianness.Little : _Endianness.Big);\n\n if (metadataOffset !== -1) { _Schema.addCustomMetadata(b, metadataOffset); }\n\n return _Schema.endSchema(b);\n}\n\n/** @ignore */\nfunction encodeField(b: Builder, field: Field) {\n\n let nameOffset = -1;\n let typeOffset = -1;\n let dictionaryOffset = -1;\n\n let type = field.type;\n let typeId: Type = field.typeId;\n\n if (!DataType.isDictionary(type)) {\n typeOffset = typeAssembler.visit(type, b)!;\n } else {\n typeId = type.dictionary.typeId;\n dictionaryOffset = typeAssembler.visit(type, b)!;\n typeOffset = typeAssembler.visit(type.dictionary, b)!;\n }\n\n const childOffsets = (type.children || []).map((f: Field) => Field.encode(b, f));\n const childrenVectorOffset = _Field.createChildrenVector(b, childOffsets);\n\n const metadataOffset = !(field.metadata && field.metadata.size > 0) ? -1 :\n _Field.createCustomMetadataVector(b, [...field.metadata].map(([k, v]) => {\n const key = b.createString(`${k}`);\n const val = b.createString(`${v}`);\n _KeyValue.startKeyValue(b);\n _KeyValue.addKey(b, key);\n _KeyValue.addValue(b, val);\n return _KeyValue.endKeyValue(b);\n }));\n\n if (field.name) {\n nameOffset = b.createString(field.name);\n }\n\n _Field.startField(b);\n _Field.addType(b, typeOffset);\n _Field.addTypeType(b, typeId);\n _Field.addChildren(b, childrenVectorOffset);\n _Field.addNullable(b, !!field.nullable);\n\n if (nameOffset !== -1) { _Field.addName(b, nameOffset); }\n if (dictionaryOffset !== -1) { _Field.addDictionary(b, dictionaryOffset); }\n if (metadataOffset !== -1) { _Field.addCustomMetadata(b, metadataOffset); }\n\n return _Field.endField(b);\n}\n\n/** @ignore */\nfunction encodeRecordBatch(b: Builder, recordBatch: RecordBatch) {\n\n const nodes = recordBatch.nodes || [];\n const buffers = recordBatch.buffers || [];\n\n _RecordBatch.startNodesVector(b, nodes.length);\n nodes.slice().reverse().forEach((n) => FieldNode.encode(b, n));\n\n const nodesVectorOffset = b.endVector();\n\n _RecordBatch.startBuffersVector(b, buffers.length);\n buffers.slice().reverse().forEach((b_) => BufferRegion.encode(b, b_));\n\n const buffersVectorOffset = b.endVector();\n\n _RecordBatch.startRecordBatch(b);\n _RecordBatch.addLength(b, new Long(recordBatch.length, 0));\n _RecordBatch.addNodes(b, nodesVectorOffset);\n _RecordBatch.addBuffers(b, buffersVectorOffset);\n return _RecordBatch.endRecordBatch(b);\n}\n\n/** @ignore */\nfunction encodeDictionaryBatch(b: Builder, dictionaryBatch: DictionaryBatch) {\n const dataOffset = RecordBatch.encode(b, dictionaryBatch.data);\n _DictionaryBatch.startDictionaryBatch(b);\n _DictionaryBatch.addId(b, new Long(dictionaryBatch.id, 0));\n _DictionaryBatch.addIsDelta(b, dictionaryBatch.isDelta);\n _DictionaryBatch.addData(b, dataOffset);\n return _DictionaryBatch.endDictionaryBatch(b);\n}\n\n/** @ignore */\nfunction encodeFieldNode(b: Builder, node: FieldNode) {\n return _FieldNode.createFieldNode(b, new Long(node.length, 0), new Long(node.nullCount, 0));\n}\n\n/** @ignore */\nfunction encodeBufferRegion(b: Builder, node: BufferRegion) {\n return _Buffer.createBuffer(b, new Long(node.offset, 0), new Long(node.length, 0));\n}\n\n/** @ignore */\nconst platformIsLittleEndian = (function() {\n const buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] === 256;\n})();\n\n/** @ignore */\ntype MessageHeaderDecoder = () => T extends MessageHeader.Schema ? Schema\n : T extends MessageHeader.RecordBatch ? RecordBatch\n : T extends MessageHeader.DictionaryBatch ? DictionaryBatch : never;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { MessageHeader } from '../enum';\nimport { flatbuffers } from 'flatbuffers';\nimport ByteBuffer = flatbuffers.ByteBuffer;\nimport { Message } from './metadata/message';\nimport { isFileHandle } from '../util/compat';\nimport { AsyncRandomAccessFile } from '../io/file';\nimport { toUint8Array, ArrayBufferViewInput } from '../util/buffer';\nimport { ByteStream, ReadableSource, AsyncByteStream } from '../io/stream';\nimport { ArrowJSON, ArrowJSONLike, ITERATOR_DONE, FileHandle } from '../io/interfaces';\n\n/** @ignore */ const invalidMessageType = (type: MessageHeader) => `Expected ${MessageHeader[type]} Message in stream, but was null or length 0.`;\n/** @ignore */ const nullMessage = (type: MessageHeader) => `Header pointer of flatbuffer-encoded ${MessageHeader[type]} Message is null or length 0.`;\n/** @ignore */ const invalidMessageMetadata = (expected: number, actual: number) => `Expected to read ${expected} metadata bytes, but only read ${actual}.`;\n/** @ignore */ const invalidMessageBodyLength = (expected: number, actual: number) => `Expected to read ${expected} bytes for message body, but only read ${actual}.`;\n\n/** @ignore */\nexport class MessageReader implements IterableIterator {\n protected source: ByteStream;\n constructor(source: ByteStream | ArrayBufferViewInput | Iterable) {\n this.source = source instanceof ByteStream ? source : new ByteStream(source);\n }\n public [Symbol.iterator](): IterableIterator { return this as IterableIterator; }\n public next(): IteratorResult {\n let r;\n if ((r = this.readMetadataLength()).done) { return ITERATOR_DONE; }\n // ARROW-6313: If the first 4 bytes are continuation indicator (-1), read\n // the next 4 for the 32-bit metadata length. Otherwise, assume this is a\n // pre-v0.15 message, where the first 4 bytes are the metadata length.\n if ((r.value === -1) &&\n (r = this.readMetadataLength()).done) { return ITERATOR_DONE; }\n if ((r = this.readMetadata(r.value)).done) { return ITERATOR_DONE; }\n return ( r) as IteratorResult;\n }\n public throw(value?: any) { return this.source.throw(value); }\n public return(value?: any) { return this.source.return(value); }\n public readMessage(type?: T | null) {\n let r: IteratorResult>;\n if ((r = this.next()).done) { return null; }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n public readMessageBody(bodyLength: number): Uint8Array {\n if (bodyLength <= 0) { return new Uint8Array(0); }\n const buf = toUint8Array(this.source.read(bodyLength));\n if (buf.byteLength < bodyLength) {\n throw new Error(invalidMessageBodyLength(bodyLength, buf.byteLength));\n }\n // 1. Work around bugs in fs.ReadStream's internal Buffer pooling, see: https://github.com/nodejs/node/issues/24817\n // 2. Work around https://github.com/whatwg/streams/blob/0ebe4b042e467d9876d80ae045de3843092ad797/reference-implementation/lib/helpers.js#L126\n return /* 1. */ (buf.byteOffset % 8 === 0) &&\n /* 2. */ (buf.byteOffset + buf.byteLength) <= buf.buffer.byteLength ? buf : buf.slice();\n }\n public readSchema(throwIfNull = false) {\n const type = MessageHeader.Schema;\n const message = this.readMessage(type);\n const schema = message && message.header();\n if (throwIfNull && !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n protected readMetadataLength(): IteratorResult {\n const buf = this.source.read(PADDING);\n const bb = buf && new ByteBuffer(buf);\n const len = bb && bb.readInt32(0) || 0;\n return { done: len === 0, value: len };\n }\n protected readMetadata(metadataLength: number): IteratorResult {\n const buf = this.source.read(metadataLength);\n if (!buf) { return ITERATOR_DONE; }\n if (buf.byteLength < metadataLength) {\n throw new Error(invalidMessageMetadata(metadataLength, buf.byteLength));\n }\n return { done: false, value: Message.decode(buf) };\n }\n}\n\n/** @ignore */\nexport class AsyncMessageReader implements AsyncIterableIterator {\n protected source: AsyncByteStream;\n constructor(source: ReadableSource);\n constructor(source: FileHandle, byteLength?: number);\n constructor(source: any, byteLength?: number) {\n this.source = source instanceof AsyncByteStream ? source\n : isFileHandle(source)\n ? new AsyncRandomAccessFile(source, byteLength!)\n : new AsyncByteStream(source);\n }\n public [Symbol.asyncIterator](): AsyncIterableIterator { return this as AsyncIterableIterator; }\n public async next(): Promise> {\n let r;\n if ((r = await this.readMetadataLength()).done) { return ITERATOR_DONE; }\n // ARROW-6313: If the first 4 bytes are continuation indicator (-1), read\n // the next 4 for the 32-bit metadata length. Otherwise, assume this is a\n // pre-v0.15 message, where the first 4 bytes are the metadata length.\n if ((r.value === -1) &&\n (r = await this.readMetadataLength()).done) { return ITERATOR_DONE; }\n if ((r = await this.readMetadata(r.value)).done) { return ITERATOR_DONE; }\n return ( r) as IteratorResult;\n }\n public async throw(value?: any) { return await this.source.throw(value); }\n public async return(value?: any) { return await this.source.return(value); }\n public async readMessage(type?: T | null) {\n let r: IteratorResult>;\n if ((r = await this.next()).done) { return null; }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n public async readMessageBody(bodyLength: number): Promise {\n if (bodyLength <= 0) { return new Uint8Array(0); }\n const buf = toUint8Array(await this.source.read(bodyLength));\n if (buf.byteLength < bodyLength) {\n throw new Error(invalidMessageBodyLength(bodyLength, buf.byteLength));\n }\n // 1. Work around bugs in fs.ReadStream's internal Buffer pooling, see: https://github.com/nodejs/node/issues/24817\n // 2. Work around https://github.com/whatwg/streams/blob/0ebe4b042e467d9876d80ae045de3843092ad797/reference-implementation/lib/helpers.js#L126\n return /* 1. */ (buf.byteOffset % 8 === 0) &&\n /* 2. */ (buf.byteOffset + buf.byteLength) <= buf.buffer.byteLength ? buf : buf.slice();\n }\n public async readSchema(throwIfNull = false) {\n const type = MessageHeader.Schema;\n const message = await this.readMessage(type);\n const schema = message && message.header();\n if (throwIfNull && !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n protected async readMetadataLength(): Promise> {\n const buf = await this.source.read(PADDING);\n const bb = buf && new ByteBuffer(buf);\n const len = bb && bb.readInt32(0) || 0;\n return { done: len === 0, value: len };\n }\n protected async readMetadata(metadataLength: number): Promise> {\n const buf = await this.source.read(metadataLength);\n if (!buf) { return ITERATOR_DONE; }\n if (buf.byteLength < metadataLength) {\n throw new Error(invalidMessageMetadata(metadataLength, buf.byteLength));\n }\n return { done: false, value: Message.decode(buf) };\n }\n}\n\n/** @ignore */\nexport class JSONMessageReader extends MessageReader {\n private _schema = false;\n private _json: ArrowJSON;\n private _body: any[] = [];\n private _batchIndex = 0;\n private _dictionaryIndex = 0;\n constructor(source: ArrowJSON | ArrowJSONLike) {\n super(new Uint8Array(0));\n this._json = source instanceof ArrowJSON ? source : new ArrowJSON(source);\n }\n public next() {\n const { _json } = this;\n if (!this._schema) {\n this._schema = true;\n const message = Message.fromJSON(_json.schema, MessageHeader.Schema);\n return { done: false, value: message };\n }\n if (this._dictionaryIndex < _json.dictionaries.length) {\n const batch = _json.dictionaries[this._dictionaryIndex++];\n this._body = batch['data']['columns'];\n const message = Message.fromJSON(batch, MessageHeader.DictionaryBatch);\n return { done: false, value: message };\n }\n if (this._batchIndex < _json.batches.length) {\n const batch = _json.batches[this._batchIndex++];\n this._body = batch['columns'];\n const message = Message.fromJSON(batch, MessageHeader.RecordBatch);\n return { done: false, value: message };\n }\n this._body = [];\n return ITERATOR_DONE;\n }\n public readMessageBody(_bodyLength?: number) {\n return flattenDataSources(this._body) as any;\n function flattenDataSources(xs: any[]): any[][] {\n return (xs || []).reduce((buffers, column: any) => [\n ...buffers,\n ...(column['VALIDITY'] && [column['VALIDITY']] || []),\n ...(column['TYPE'] && [column['TYPE']] || []),\n ...(column['OFFSET'] && [column['OFFSET']] || []),\n ...(column['DATA'] && [column['DATA']] || []),\n ...flattenDataSources(column['children'])\n ], [] as any[][]);\n }\n }\n public readMessage(type?: T | null) {\n let r: IteratorResult>;\n if ((r = this.next()).done) { return null; }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n public readSchema() {\n const type = MessageHeader.Schema;\n const message = this.readMessage(type);\n const schema = message && message.header();\n if (!message || !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n}\n\n/** @ignore */\nexport const PADDING = 4;\n/** @ignore */\nexport const MAGIC_STR = 'ARROW1';\n/** @ignore */\nexport const MAGIC = new Uint8Array(MAGIC_STR.length);\n\nfor (let i = 0; i < MAGIC_STR.length; i += 1 | 0) {\n MAGIC[i] = MAGIC_STR.charCodeAt(i);\n}\n\n/** @ignore */\nexport function checkForMagicArrowString(buffer: Uint8Array, index = 0) {\n for (let i = -1, n = MAGIC.length; ++i < n;) {\n if (MAGIC[i] !== buffer[index + i]) {\n return false;\n }\n }\n return true;\n}\n\n/** @ignore */\nexport const magicLength = MAGIC.length;\n/** @ignore */\nexport const magicAndPadding = magicLength + PADDING;\n/** @ignore */\nexport const magicX2AndPadding = magicLength * 2 + PADDING;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { Visitor } from '../visitor';\nimport { Type, UnionMode } from '../enum';\nimport { RecordBatch } from '../recordbatch';\nimport { VectorType as V } from '../interfaces';\nimport { rebaseValueOffsets } from '../util/buffer';\nimport { packBools, truncateBitmap } from '../util/bit';\nimport { selectVectorChildrenArgs } from '../util/args';\nimport { BufferRegion, FieldNode } from '../ipc/metadata/message';\nimport {\n DataType, Dictionary,\n Float, Int, Date_, Interval, Time, Timestamp, Union,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n} from '../type';\n\n/** @ignore */\nexport interface VectorAssembler extends Visitor {\n visit(node: T): this;\n visitMany(nodes: T[]): this[];\n getVisitFn(node: T): (vector: V) => this;\n getVisitFn(node: V | Data | T): (vector: V) => this;\n\n visitBool (vector: V): this;\n visitInt (vector: V): this;\n visitFloat (vector: V): this;\n visitUtf8 (vector: V): this;\n visitBinary (vector: V): this;\n visitFixedSizeBinary (vector: V): this;\n visitDate (vector: V): this;\n visitTimestamp (vector: V): this;\n visitTime (vector: V): this;\n visitDecimal (vector: V): this;\n visitList (vector: V): this;\n visitStruct (vector: V): this;\n visitUnion (vector: V): this;\n visitInterval (vector: V): this;\n visitFixedSizeList (vector: V): this;\n visitMap (vector: V): this;\n}\n\n/** @ignore */\nexport class VectorAssembler extends Visitor {\n\n /** @nocollapse */\n public static assemble(...args: (T | T[])[]) {\n const assembler = new VectorAssembler();\n const vectorChildren = selectVectorChildrenArgs(RecordBatch, args);\n const [assembleResult = assembler] = assembler.visitMany(vectorChildren);\n return assembleResult;\n }\n\n private constructor() { super(); }\n\n public visit(vector: T): this {\n if (!DataType.isDictionary(vector.type)) {\n const { data, length, nullCount } = vector;\n if (length > 2147483647) {\n /* istanbul ignore next */\n throw new RangeError('Cannot write arrays larger than 2^31 - 1 in length');\n }\n if (!DataType.isNull(vector.type)) {\n addBuffer.call(this, nullCount <= 0\n ? new Uint8Array(0) // placeholder validity buffer\n : truncateBitmap(data.offset, length, data.nullBitmap)\n );\n }\n this.nodes.push(new FieldNode(length, nullCount));\n }\n return super.visit(vector);\n }\n\n public visitNull(_nullV: V) {\n return this;\n }\n public visitDictionary(vector: V) {\n // Assemble the indices here, Dictionary assembled separately.\n return this.visit(vector.indices);\n }\n\n public get nodes() { return this._nodes; }\n public get buffers() { return this._buffers; }\n public get byteLength() { return this._byteLength; }\n public get bufferRegions() { return this._bufferRegions; }\n\n protected _byteLength = 0;\n protected _nodes: FieldNode[] = [];\n protected _buffers: ArrayBufferView[] = [];\n protected _bufferRegions: BufferRegion[] = [];\n}\n\n/** @ignore */\nfunction addBuffer(this: VectorAssembler, values: ArrayBufferView) {\n const byteLength = (values.byteLength + 7) & ~7; // Round up to a multiple of 8\n this.buffers.push(values);\n this.bufferRegions.push(new BufferRegion(this._byteLength, byteLength));\n this._byteLength += byteLength;\n return this;\n}\n\n/** @ignore */\nfunction assembleUnion(this: VectorAssembler, vector: V) {\n const { type, length, typeIds, valueOffsets } = vector;\n // All Union Vectors have a typeIds buffer\n addBuffer.call(this, typeIds);\n // If this is a Sparse Union, treat it like all other Nested types\n if (type.mode === UnionMode.Sparse) {\n return assembleNestedVector.call(this, vector);\n } else if (type.mode === UnionMode.Dense) {\n // If this is a Dense Union, add the valueOffsets buffer and potentially slice the children\n if (vector.offset <= 0) {\n // If the Vector hasn't been sliced, write the existing valueOffsets\n addBuffer.call(this, valueOffsets);\n // We can treat this like all other Nested types\n return assembleNestedVector.call(this, vector);\n } else {\n // A sliced Dense Union is an unpleasant case. Because the offsets are different for\n // each child vector, we need to \"rebase\" the valueOffsets for each child\n // Union typeIds are not necessary 0-indexed\n const maxChildTypeId = typeIds.reduce((x, y) => Math.max(x, y), typeIds[0]);\n const childLengths = new Int32Array(maxChildTypeId + 1);\n // Set all to -1 to indicate that we haven't observed a first occurrence of a particular child yet\n const childOffsets = new Int32Array(maxChildTypeId + 1).fill(-1);\n const shiftedOffsets = new Int32Array(length);\n // If we have a non-zero offset, then the value offsets do not start at\n // zero. We must a) create a new offsets array with shifted offsets and\n // b) slice the values array accordingly\n const unshiftedOffsets = rebaseValueOffsets(-valueOffsets[0], length, valueOffsets);\n for (let typeId, shift, index = -1; ++index < length;) {\n if ((shift = childOffsets[typeId = typeIds[index]]) === -1) {\n shift = childOffsets[typeId] = unshiftedOffsets[typeId];\n }\n shiftedOffsets[index] = unshiftedOffsets[index] - shift;\n ++childLengths[typeId];\n }\n addBuffer.call(this, shiftedOffsets);\n // Slice and visit children accordingly\n for (let child: Vector | null, childIndex = -1, numChildren = type.children.length; ++childIndex < numChildren;) {\n if (child = vector.getChildAt(childIndex)) {\n const typeId = type.typeIds[childIndex];\n const childLength = Math.min(length, childLengths[typeId]);\n this.visit(child.slice(childOffsets[typeId], childLength));\n }\n }\n }\n }\n return this;\n}\n\n/** @ignore */\nfunction assembleBoolVector(this: VectorAssembler, vector: V) {\n // Bool vector is a special case of FlatVector, as its data buffer needs to stay packed\n let values: Uint8Array;\n if (vector.nullCount >= vector.length) {\n // If all values are null, just insert a placeholder empty data buffer (fastest path)\n return addBuffer.call(this, new Uint8Array(0));\n } else if ((values = vector.values) instanceof Uint8Array) {\n // If values is already a Uint8Array, slice the bitmap (fast path)\n return addBuffer.call(this, truncateBitmap(vector.offset, vector.length, values));\n }\n // Otherwise if the underlying data *isn't* a Uint8Array, enumerate the\n // values as bools and re-pack them into a Uint8Array. This code isn't\n // reachable unless you're trying to manipulate the Data internals,\n // we we're only doing this for safety.\n /* istanbul ignore next */\n return addBuffer.call(this, packBools(vector));\n}\n\n/** @ignore */\nfunction assembleFlatVector(this: VectorAssembler, vector: V) {\n return addBuffer.call(this, vector.values.subarray(0, vector.length * vector.stride));\n}\n\n/** @ignore */\nfunction assembleFlatListVector(this: VectorAssembler, vector: V) {\n const { length, values, valueOffsets } = vector;\n const firstOffset = valueOffsets[0];\n const lastOffset = valueOffsets[length];\n const byteLength = Math.min(lastOffset - firstOffset, values.byteLength - firstOffset);\n // Push in the order FlatList types read their buffers\n addBuffer.call(this, rebaseValueOffsets(-valueOffsets[0], length, valueOffsets)); // valueOffsets buffer first\n addBuffer.call(this, values.subarray(firstOffset, firstOffset + byteLength)); // sliced values buffer second\n return this;\n}\n\n/** @ignore */\nfunction assembleListVector(this: VectorAssembler, vector: V) {\n const { length, valueOffsets } = vector;\n // If we have valueOffsets (MapVector, ListVector), push that buffer first\n if (valueOffsets) {\n addBuffer.call(this, rebaseValueOffsets(valueOffsets[0], length, valueOffsets));\n }\n // Then insert the List's values child\n return this.visit(vector.getChildAt(0)!);\n}\n\n/** @ignore */\nfunction assembleNestedVector(this: VectorAssembler, vector: V) {\n return this.visitMany(vector.type.children.map((_, i) => vector.getChildAt(i)!).filter(Boolean))[0];\n}\n\nVectorAssembler.prototype.visitBool = assembleBoolVector;\nVectorAssembler.prototype.visitInt = assembleFlatVector;\nVectorAssembler.prototype.visitFloat = assembleFlatVector;\nVectorAssembler.prototype.visitUtf8 = assembleFlatListVector;\nVectorAssembler.prototype.visitBinary = assembleFlatListVector;\nVectorAssembler.prototype.visitFixedSizeBinary = assembleFlatVector;\nVectorAssembler.prototype.visitDate = assembleFlatVector;\nVectorAssembler.prototype.visitTimestamp = assembleFlatVector;\nVectorAssembler.prototype.visitTime = assembleFlatVector;\nVectorAssembler.prototype.visitDecimal = assembleFlatVector;\nVectorAssembler.prototype.visitList = assembleListVector;\nVectorAssembler.prototype.visitStruct = assembleNestedVector;\nVectorAssembler.prototype.visitUnion = assembleUnion;\nVectorAssembler.prototype.visitInterval = assembleFlatVector;\nVectorAssembler.prototype.visitFixedSizeList = assembleListVector;\nVectorAssembler.prototype.visitMap = assembleListVector;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Table } from '../table';\nimport { MAGIC } from './message';\nimport { Vector } from '../vector';\nimport { Column } from '../column';\nimport { DataType } from '../type';\nimport { Schema, Field } from '../schema';\nimport { Message } from './metadata/message';\nimport * as metadata from './metadata/message';\nimport { FileBlock, Footer } from './metadata/file';\nimport { MessageHeader, MetadataVersion } from '../enum';\nimport { WritableSink, AsyncByteQueue } from '../io/stream';\nimport { VectorAssembler } from '../visitor/vectorassembler';\nimport { JSONTypeAssembler } from '../visitor/jsontypeassembler';\nimport { JSONVectorAssembler } from '../visitor/jsonvectorassembler';\nimport { ArrayBufferViewInput, toUint8Array } from '../util/buffer';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from '../recordbatch';\nimport { Writable, ReadableInterop, ReadableDOMStreamOptions } from '../io/interfaces';\nimport { isPromise, isAsyncIterable, isWritableDOMStream, isWritableNodeStream, isIterable, isObject } from '../util/compat';\n\nexport interface RecordBatchStreamWriterOptions {\n /**\n *\n */\n autoDestroy?: boolean;\n /**\n * A flag indicating whether the RecordBatchWriter should construct pre-0.15.0\n * encapsulated IPC Messages, which reserves 4 bytes for the Message metadata\n * length instead of 8.\n * @see https://issues.apache.org/jira/browse/ARROW-6313\n */\n writeLegacyIpcFormat?: boolean;\n}\n\nexport class RecordBatchWriter extends ReadableInterop implements Writable> {\n\n /** @nocollapse */\n // @ts-ignore\n public static throughNode(options?: import('stream').DuplexOptions & { autoDestroy: boolean }): import('stream').Duplex {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n public static throughDOM(\n // @ts-ignore\n writableStrategy?: QueuingStrategy> & { autoDestroy: boolean },\n // @ts-ignore\n readableStrategy?: { highWaterMark?: number, size?: any }\n ): { writable: WritableStream | RecordBatch>, readable: ReadableStream } {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n\n constructor(options?: RecordBatchStreamWriterOptions) {\n super();\n isObject(options) || (options = { autoDestroy: true, writeLegacyIpcFormat: false });\n this._autoDestroy = (typeof options.autoDestroy === 'boolean') ? options.autoDestroy : true;\n this._writeLegacyIpcFormat = (typeof options.writeLegacyIpcFormat === 'boolean') ? options.writeLegacyIpcFormat : false;\n }\n\n protected _position = 0;\n protected _started = false;\n protected _autoDestroy: boolean;\n protected _writeLegacyIpcFormat: boolean;\n // @ts-ignore\n protected _sink = new AsyncByteQueue();\n protected _schema: Schema | null = null;\n protected _dictionaryBlocks: FileBlock[] = [];\n protected _recordBatchBlocks: FileBlock[] = [];\n protected _dictionaryDeltaOffsets = new Map();\n\n public toString(sync: true): string;\n public toString(sync?: false): Promise;\n public toString(sync: any = false) {\n return this._sink.toString(sync) as Promise | string;\n }\n public toUint8Array(sync: true): Uint8Array;\n public toUint8Array(sync?: false): Promise;\n public toUint8Array(sync: any = false) {\n return this._sink.toUint8Array(sync) as Promise | Uint8Array;\n }\n\n public writeAll(input: Table | Iterable>): this;\n public writeAll(input: AsyncIterable>): Promise;\n public writeAll(input: PromiseLike>>): Promise;\n public writeAll(input: PromiseLike | Iterable>>): Promise;\n public writeAll(input: PromiseLike | Table | Iterable> | AsyncIterable>) {\n if (isPromise(input)) {\n return input.then((x) => this.writeAll(x));\n } else if (isAsyncIterable>(input)) {\n return writeAllAsync(this, input);\n }\n return writeAll(this, input);\n }\n\n public get closed() { return this._sink.closed; }\n public [Symbol.asyncIterator]() { return this._sink[Symbol.asyncIterator](); }\n public toDOMStream(options?: ReadableDOMStreamOptions) { return this._sink.toDOMStream(options); }\n public toNodeStream(options?: import('stream').ReadableOptions) { return this._sink.toNodeStream(options); }\n\n public close() {\n return this.reset()._sink.close();\n }\n public abort(reason?: any) {\n return this.reset()._sink.abort(reason);\n }\n public finish() {\n this._autoDestroy ? this.close() : this.reset(this._sink, this._schema);\n return this;\n }\n public reset(sink: WritableSink = this._sink, schema: Schema | null = null) {\n\n if ((sink === this._sink) || (sink instanceof AsyncByteQueue)) {\n this._sink = sink as AsyncByteQueue;\n } else {\n this._sink = new AsyncByteQueue();\n if (sink && isWritableDOMStream(sink)) {\n this.toDOMStream({ type: 'bytes' }).pipeTo(sink);\n } else if (sink && isWritableNodeStream(sink)) {\n this.toNodeStream({ objectMode: false }).pipe(sink);\n }\n }\n\n if (this._started && this._schema) {\n this._writeFooter(this._schema);\n }\n\n this._started = false;\n this._dictionaryBlocks = [];\n this._recordBatchBlocks = [];\n this._dictionaryDeltaOffsets = new Map();\n\n if (!schema || !(schema.compareTo(this._schema))) {\n if (schema === null) {\n this._position = 0;\n this._schema = null;\n } else {\n this._started = true;\n this._schema = schema;\n this._writeSchema(schema);\n }\n }\n\n return this;\n }\n\n public write(payload?: Table | RecordBatch | Iterable> | null) {\n\n let schema: Schema | null = null;\n\n if (!this._sink) {\n throw new Error(`RecordBatchWriter is closed`);\n } else if (payload === null || payload === undefined) {\n return this.finish() && undefined;\n } else if (payload instanceof Table && !(schema = payload.schema)) {\n return this.finish() && undefined;\n } else if (payload instanceof RecordBatch && !(schema = payload.schema)) {\n return this.finish() && undefined;\n }\n\n if (schema && !schema.compareTo(this._schema)) {\n if (this._started && this._autoDestroy) {\n return this.close();\n }\n this.reset(this._sink, schema);\n }\n\n if (payload instanceof RecordBatch) {\n if (!(payload instanceof _InternalEmptyPlaceholderRecordBatch)) {\n this._writeRecordBatch(payload);\n }\n } else if (payload instanceof Table) {\n this.writeAll(payload.chunks);\n } else if (isIterable(payload)) {\n this.writeAll(payload);\n }\n }\n\n protected _writeMessage(message: Message, alignment = 8) {\n\n const a = alignment - 1;\n const buffer = Message.encode(message);\n const flatbufferSize = buffer.byteLength;\n const prefixSize = !this._writeLegacyIpcFormat ? 8 : 4;\n const alignedSize = (flatbufferSize + prefixSize + a) & ~a;\n const nPaddingBytes = alignedSize - flatbufferSize - prefixSize;\n\n if (message.headerType === MessageHeader.RecordBatch) {\n this._recordBatchBlocks.push(new FileBlock(alignedSize, message.bodyLength, this._position));\n } else if (message.headerType === MessageHeader.DictionaryBatch) {\n this._dictionaryBlocks.push(new FileBlock(alignedSize, message.bodyLength, this._position));\n }\n\n // If not in legacy pre-0.15.0 mode, write the stream continuation indicator\n if (!this._writeLegacyIpcFormat) {\n this._write(Int32Array.of(-1));\n }\n // Write the flatbuffer size prefix including padding\n this._write(Int32Array.of(alignedSize - prefixSize));\n // Write the flatbuffer\n if (flatbufferSize > 0) { this._write(buffer); }\n // Write any padding\n return this._writePadding(nPaddingBytes);\n }\n\n protected _write(chunk: ArrayBufferViewInput) {\n if (this._started) {\n const buffer = toUint8Array(chunk);\n if (buffer && buffer.byteLength > 0) {\n this._sink.write(buffer);\n this._position += buffer.byteLength;\n }\n }\n return this;\n }\n\n protected _writeSchema(schema: Schema) {\n return this._writeMessage(Message.from(schema));\n }\n\n // @ts-ignore\n protected _writeFooter(schema: Schema) {\n // eos bytes\n return this._writeLegacyIpcFormat\n ? this._write(Int32Array.of(0))\n : this._write(Int32Array.of(-1, 0));\n }\n\n protected _writeMagic() {\n return this._write(MAGIC);\n }\n\n protected _writePadding(nBytes: number) {\n return nBytes > 0 ? this._write(new Uint8Array(nBytes)) : this;\n }\n\n protected _writeRecordBatch(batch: RecordBatch) {\n const { byteLength, nodes, bufferRegions, buffers } = VectorAssembler.assemble(batch);\n const recordBatch = new metadata.RecordBatch(batch.length, nodes, bufferRegions);\n const message = Message.from(recordBatch, byteLength);\n return this\n ._writeDictionaries(batch)\n ._writeMessage(message)\n ._writeBodyBuffers(buffers);\n }\n\n protected _writeDictionaryBatch(dictionary: Vector, id: number, isDelta = false) {\n this._dictionaryDeltaOffsets.set(id, dictionary.length + (this._dictionaryDeltaOffsets.get(id) || 0));\n const { byteLength, nodes, bufferRegions, buffers } = VectorAssembler.assemble(dictionary);\n const recordBatch = new metadata.RecordBatch(dictionary.length, nodes, bufferRegions);\n const dictionaryBatch = new metadata.DictionaryBatch(recordBatch, id, isDelta);\n const message = Message.from(dictionaryBatch, byteLength);\n return this\n ._writeMessage(message)\n ._writeBodyBuffers(buffers);\n }\n\n protected _writeBodyBuffers(buffers: ArrayBufferView[]) {\n let buffer: ArrayBufferView;\n let size: number, padding: number;\n for (let i = -1, n = buffers.length; ++i < n;) {\n if ((buffer = buffers[i]) && (size = buffer.byteLength) > 0) {\n this._write(buffer);\n if ((padding = ((size + 7) & ~7) - size) > 0) {\n this._writePadding(padding);\n }\n }\n }\n return this;\n }\n\n protected _writeDictionaries(batch: RecordBatch) {\n for (let [id, dictionary] of batch.dictionaries) {\n let offset = this._dictionaryDeltaOffsets.get(id) || 0;\n if (offset === 0 || (dictionary = dictionary.slice(offset)).length > 0) {\n const chunks = 'chunks' in dictionary ? (dictionary as any).chunks : [dictionary];\n for (const chunk of chunks) {\n this._writeDictionaryBatch(chunk, id, offset > 0);\n offset += chunk.length;\n }\n }\n }\n return this;\n }\n}\n\n/** @ignore */\nexport class RecordBatchStreamWriter extends RecordBatchWriter {\n public static writeAll(input: Table | Iterable>, options?: RecordBatchStreamWriterOptions): RecordBatchStreamWriter;\n public static writeAll(input: AsyncIterable>, options?: RecordBatchStreamWriterOptions): Promise>;\n public static writeAll(input: PromiseLike>>, options?: RecordBatchStreamWriterOptions): Promise>;\n public static writeAll(input: PromiseLike | Iterable>>, options?: RecordBatchStreamWriterOptions): Promise>;\n /** @nocollapse */\n public static writeAll(input: any, options?: RecordBatchStreamWriterOptions) {\n const writer = new RecordBatchStreamWriter(options);\n if (isPromise(input)) {\n return input.then((x) => writer.writeAll(x));\n } else if (isAsyncIterable>(input)) {\n return writeAllAsync(writer, input);\n }\n return writeAll(writer, input);\n }\n}\n\n/** @ignore */\nexport class RecordBatchFileWriter extends RecordBatchWriter {\n public static writeAll(input: Table | Iterable>): RecordBatchFileWriter;\n public static writeAll(input: AsyncIterable>): Promise>;\n public static writeAll(input: PromiseLike>>): Promise>;\n public static writeAll(input: PromiseLike | Iterable>>): Promise>;\n /** @nocollapse */\n public static writeAll(input: any) {\n const writer = new RecordBatchFileWriter();\n if (isPromise(input)) {\n return input.then((x) => writer.writeAll(x));\n } else if (isAsyncIterable>(input)) {\n return writeAllAsync(writer, input);\n }\n return writeAll(writer, input);\n }\n\n constructor() {\n super();\n this._autoDestroy = true;\n }\n\n // @ts-ignore\n protected _writeSchema(schema: Schema) {\n return this._writeMagic()._writePadding(2);\n }\n\n protected _writeFooter(schema: Schema) {\n const buffer = Footer.encode(new Footer(\n schema, MetadataVersion.V4,\n this._recordBatchBlocks, this._dictionaryBlocks\n ));\n return super\n ._writeFooter(schema) // EOS bytes for sequential readers\n ._write(buffer) // Write the flatbuffer\n ._write(Int32Array.of(buffer.byteLength)) // then the footer size suffix\n ._writeMagic(); // then the magic suffix\n }\n}\n\n/** @ignore */\nexport class RecordBatchJSONWriter extends RecordBatchWriter {\n\n public static writeAll(this: typeof RecordBatchWriter, input: Table | Iterable>): RecordBatchJSONWriter;\n // @ts-ignore\n public static writeAll(this: typeof RecordBatchWriter, input: AsyncIterable>): Promise>;\n public static writeAll(this: typeof RecordBatchWriter, input: PromiseLike>>): Promise>;\n public static writeAll(this: typeof RecordBatchWriter, input: PromiseLike | Iterable>>): Promise>;\n /** @nocollapse */\n public static writeAll(this: typeof RecordBatchWriter, input: any) {\n return new RecordBatchJSONWriter().writeAll(input as any);\n }\n\n private _recordBatches: RecordBatch[];\n private _dictionaries: RecordBatch[];\n\n constructor() {\n super();\n this._autoDestroy = true;\n this._recordBatches = [];\n this._dictionaries = [];\n }\n\n protected _writeMessage() { return this; }\n // @ts-ignore\n protected _writeFooter(schema: Schema) { return this; }\n protected _writeSchema(schema: Schema) {\n return this._write(`{\\n \"schema\": ${\n JSON.stringify({ fields: schema.fields.map(fieldToJSON) }, null, 2)\n }`);\n }\n protected _writeDictionaries(batch: RecordBatch) {\n if (batch.dictionaries.size > 0) {\n this._dictionaries.push(batch);\n }\n return this;\n }\n protected _writeDictionaryBatch(dictionary: Vector, id: number, isDelta = false) {\n this._dictionaryDeltaOffsets.set(id, dictionary.length + (this._dictionaryDeltaOffsets.get(id) || 0));\n this._write(this._dictionaryBlocks.length === 0 ? ` ` : `,\\n `);\n this._write(`${dictionaryBatchToJSON(dictionary, id, isDelta)}`);\n this._dictionaryBlocks.push(new FileBlock(0, 0, 0));\n return this;\n }\n protected _writeRecordBatch(batch: RecordBatch) {\n this._writeDictionaries(batch);\n this._recordBatches.push(batch);\n return this;\n }\n public close() {\n\n if (this._dictionaries.length > 0) {\n this._write(`,\\n \"dictionaries\": [\\n`);\n for (const batch of this._dictionaries) {\n super._writeDictionaries(batch);\n }\n this._write(`\\n ]`);\n }\n\n if (this._recordBatches.length > 0) {\n for (let i = -1, n = this._recordBatches.length; ++i < n;) {\n this._write(i === 0 ? `,\\n \"batches\": [\\n ` : `,\\n `);\n this._write(`${recordBatchToJSON(this._recordBatches[i])}`);\n this._recordBatchBlocks.push(new FileBlock(0, 0, 0));\n }\n this._write(`\\n ]`);\n }\n\n if (this._schema) {\n this._write(`\\n}`);\n }\n\n this._dictionaries = [];\n this._recordBatches = [];\n\n return super.close();\n }\n}\n\n/** @ignore */\nfunction writeAll(writer: RecordBatchWriter, input: Table | Iterable>) {\n let chunks = input as Iterable>;\n if (input instanceof Table) {\n chunks = input.chunks;\n writer.reset(undefined, input.schema);\n }\n for (const batch of chunks) {\n writer.write(batch);\n }\n return writer.finish();\n}\n\n/** @ignore */\nasync function writeAllAsync(writer: RecordBatchWriter, batches: AsyncIterable>) {\n for await (const batch of batches) {\n writer.write(batch);\n }\n return writer.finish();\n}\n\n/** @ignore */\nfunction fieldToJSON({ name, type, nullable }: Field): object {\n const assembler = new JSONTypeAssembler();\n return {\n 'name': name, 'nullable': nullable,\n 'type': assembler.visit(type),\n 'children': (type.children || []).map(fieldToJSON),\n 'dictionary': !DataType.isDictionary(type) ? undefined : {\n 'id': type.id,\n 'isOrdered': type.isOrdered,\n 'indexType': assembler.visit(type.indices)\n }\n };\n}\n\n/** @ignore */\nfunction dictionaryBatchToJSON(dictionary: Vector, id: number, isDelta = false) {\n const field = new Field(`${id}`, dictionary.type, dictionary.nullCount > 0);\n const columns = JSONVectorAssembler.assemble(new Column(field, [dictionary]));\n return JSON.stringify({\n 'id': id,\n 'isDelta': isDelta,\n 'data': {\n 'count': dictionary.length,\n 'columns': columns\n }\n }, null, 2);\n}\n\n/** @ignore */\nfunction recordBatchToJSON(records: RecordBatch) {\n return JSON.stringify({\n 'count': records.length,\n 'columns': JSONVectorAssembler.assemble(records)\n }, null, 2);\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Column } from '../column';\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\nimport { Data, Buffers } from '../data';\nimport { Schema, Field } from '../schema';\nimport { Chunked } from '../vector/chunked';\nimport { RecordBatch } from '../recordbatch';\n\nconst noopBuf = new Uint8Array(0);\nconst nullBufs = (bitmapLength: number) => [\n noopBuf, noopBuf, new Uint8Array(bitmapLength), noopBuf\n] as Buffers;\n\n/** @ignore */\nexport function ensureSameLengthData(\n schema: Schema,\n chunks: Data[],\n batchLength = chunks.reduce((l, c) => Math.max(l, c.length), 0)\n) {\n let data: Data;\n let field: Field;\n let i = -1, n = chunks.length;\n const fields = [...schema.fields];\n const batchData = [] as Data[];\n const bitmapLength = ((batchLength + 63) & ~63) >> 3;\n while (++i < n) {\n if ((data = chunks[i]) && data.length === batchLength) {\n batchData[i] = data;\n } else {\n (field = fields[i]).nullable || (fields[i] = fields[i].clone({ nullable: true }) as Field);\n batchData[i] = data ? data._changeLengthAndBackfillNullBitmap(batchLength)\n : Data.new(field.type, 0, batchLength, batchLength, nullBufs(bitmapLength)) as Data;\n }\n }\n return [new Schema(fields), batchLength, batchData] as [Schema, number, Data[]];\n}\n\n/** @ignore */\nexport function distributeColumnsIntoRecordBatches(columns: Column[]): [Schema, RecordBatch[]] {\n return distributeVectorsIntoRecordBatches(new Schema(columns.map(({ field }) => field)), columns);\n}\n\n/** @ignore */\nexport function distributeVectorsIntoRecordBatches(schema: Schema, vecs: (Vector | Chunked)[]): [Schema, RecordBatch[]] {\n return uniformlyDistributeChunksAcrossRecordBatches(schema, vecs.map((v) => v instanceof Chunked ? v.chunks.map((c) => c.data) : [v.data]));\n}\n\n/** @ignore */\nfunction uniformlyDistributeChunksAcrossRecordBatches(schema: Schema, columns: Data[][]): [Schema, RecordBatch[]] {\n\n const fields = [...schema.fields];\n const batchArgs = [] as [number, Data[]][];\n const memo = { numBatches: columns.reduce((n, c) => Math.max(n, c.length), 0) };\n\n let numBatches = 0, batchLength = 0;\n let i: number = -1, numColumns = columns.length;\n let child: Data, childData: Data[] = [];\n\n while (memo.numBatches-- > 0) {\n\n for (batchLength = Number.POSITIVE_INFINITY, i = -1; ++i < numColumns;) {\n childData[i] = child = columns[i].shift()!;\n batchLength = Math.min(batchLength, child ? child.length : batchLength);\n }\n\n if (isFinite(batchLength)) {\n childData = distributeChildData(fields, batchLength, childData, columns, memo);\n if (batchLength > 0) {\n batchArgs[numBatches++] = [batchLength, childData.slice()];\n }\n }\n }\n return [\n schema = new Schema(fields, schema.metadata),\n batchArgs.map((xs) => new RecordBatch(schema, ...xs))\n ];\n}\n\n/** @ignore */\nfunction distributeChildData(fields: Field[], batchLength: number, childData: Data[], columns: Data[][], memo: { numBatches: number }) {\n let data: Data;\n let field: Field;\n let length = 0, i = -1, n = columns.length;\n const bitmapLength = ((batchLength + 63) & ~63) >> 3;\n while (++i < n) {\n if ((data = childData[i]) && ((length = data.length) >= batchLength)) {\n if (length === batchLength) {\n childData[i] = data;\n } else {\n childData[i] = data.slice(0, batchLength);\n data = data.slice(batchLength, length - batchLength);\n memo.numBatches = Math.max(memo.numBatches, columns[i].unshift(data));\n }\n } else {\n (field = fields[i]).nullable || (fields[i] = field.clone({ nullable: true }) as Field);\n childData[i] = data ? data._changeLengthAndBackfillNullBitmap(batchLength)\n : Data.new(field.type, 0, batchLength, batchLength, nullBufs(bitmapLength)) as Data;\n }\n }\n return childData;\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { DataType } from '../type';\nimport { Chunked } from './chunked';\nimport { clampRange } from '../util/vector';\nimport { VectorType as V } from '../interfaces';\nimport { AbstractVector, Vector, Clonable, Sliceable, Applicative } from '../vector';\n\n/** @ignore */\nexport interface BaseVector extends Clonable>, Sliceable>, Applicative> {\n slice(begin?: number, end?: number): V;\n concat(...others: Vector[]): Chunked;\n clone(data: Data, children?: Vector[]): V;\n}\n\n/** @ignore */\nexport abstract class BaseVector extends AbstractVector\n implements Clonable>, Sliceable>, Applicative> {\n\n protected _children?: Vector[];\n\n constructor(data: Data, children?: Vector[]) {\n super();\n this._children = children;\n this.numChildren = data.childData.length;\n this._bindDataAccessors(this.data = data);\n }\n\n public readonly data: Data;\n public readonly numChildren: number;\n\n public get type() { return this.data.type; }\n public get typeId() { return this.data.typeId; }\n public get length() { return this.data.length; }\n public get offset() { return this.data.offset; }\n public get stride() { return this.data.stride; }\n public get nullCount() { return this.data.nullCount; }\n public get byteLength() { return this.data.byteLength; }\n public get VectorName() { return `${Type[this.typeId]}Vector`; }\n\n public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n\n public get values() { return this.data.values; }\n public get typeIds() { return this.data.typeIds; }\n public get nullBitmap() { return this.data.nullBitmap; }\n public get valueOffsets() { return this.data.valueOffsets; }\n\n public get [Symbol.toStringTag]() { return `${this.VectorName}<${this.type[Symbol.toStringTag]}>`; }\n\n public clone(data: Data, children = this._children) {\n return Vector.new(data, children) as any;\n }\n\n public concat(...others: Vector[]) {\n return Chunked.concat(this, ...others);\n }\n\n public slice(begin?: number, end?: number) {\n // Adjust args similar to Array.prototype.slice. Normalize begin/end to\n // clamp between 0 and length, and wrap around on negative indices, e.g.\n // slice(-1, 5) or slice(5, -1)\n return clampRange(this, begin, end, this._sliceInternal);\n }\n\n public isValid(index: number): boolean {\n if (this.nullCount > 0) {\n const idx = this.offset + index;\n const val = this.nullBitmap[idx >> 3];\n const mask = (val & (1 << (idx % 8)));\n return mask !== 0;\n }\n return true;\n }\n\n public getChildAt(index: number): Vector | null {\n return index < 0 || index >= this.numChildren ? null : (\n (this._children || (this._children = []))[index] ||\n (this._children[index] = Vector.new(this.data.childData[index] as Data))\n ) as Vector;\n }\n\n public toJSON(): any { return [...this]; }\n\n protected _sliceInternal(self: this, begin: number, end: number) {\n return self.clone(self.data.slice(begin, end - begin), null!);\n }\n\n // @ts-ignore\n protected _bindDataAccessors(data: Data) {\n // Implementation in src/vectors/index.ts due to circular dependency/packaging shenanigans\n }\n}\n\n(BaseVector.prototype as any)[Symbol.isConcatSpreadable] = true;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { Binary, Utf8 } from '../type';\n\n/** @ignore */\nexport class BinaryVector extends BaseVector {\n public asUtf8() {\n return Vector.new(this.data.clone(new Utf8()));\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Bool } from '../type';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { VectorBuilderOptions } from './index';\nimport { vectorFromValuesWithType } from './index';\nimport { VectorBuilderOptionsAsync } from './index';\n\n/** @ignore */\nexport class BoolVector extends BaseVector {\n public static from(input: Iterable): BoolVector;\n public static from(input: AsyncIterable): Promise;\n public static from(input: VectorBuilderOptions): Chunked;\n public static from(input: VectorBuilderOptionsAsync): Promise>;\n /** @nocollapse */\n public static from(input: Iterable | AsyncIterable | VectorBuilderOptions | VectorBuilderOptionsAsync) {\n return vectorFromValuesWithType(() => new Bool(), input);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { DateUnit } from '../enum';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { VectorType as V } from '../interfaces';\nimport { VectorBuilderOptions } from './index';\nimport { vectorFromValuesWithType } from './index';\nimport { VectorBuilderOptionsAsync } from './index';\nimport { Date_, DateDay, DateMillisecond } from '../type';\n\n/** @ignore */\ntype FromArgs = [Iterable, T['unit']];\n\n/** @ignore */\nexport class DateVector extends BaseVector {\n public static from(...args: FromArgs): V;\n public static from(...args: FromArgs): V;\n public static from(input: Iterable): V;\n public static from(input: AsyncIterable): Promise>;\n public static from(input: VectorBuilderOptions): Chunked;\n public static from(input: VectorBuilderOptionsAsync): Promise>;\n /** @nocollapse */\n public static from(...args: FromArgs | [Iterable | AsyncIterable | VectorBuilderOptions | VectorBuilderOptionsAsync]) {\n if (args.length === 2) {\n return vectorFromValuesWithType(() => args[1] === DateUnit.DAY ? new DateDay() : new DateMillisecond() as T, args[0]);\n }\n return vectorFromValuesWithType(() => new DateMillisecond() as T, args[0]);\n }\n}\n\n/** @ignore */\nexport class DateDayVector extends DateVector {}\n\n/** @ignore */\nexport class DateMillisecondVector extends DateVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Decimal } from '../type';\nimport { BaseVector } from './base';\n\n/** @ignore */\nexport class DecimalVector extends BaseVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { VectorType as V } from '../interfaces';\nimport { VectorBuilderOptions } from './index';\nimport { vectorFromValuesWithType } from './index';\nimport { VectorBuilderOptionsAsync } from './index';\nimport { DataType, Dictionary, TKeys } from '../type';\n\n/** @ignore */\ntype FromArgs = [Vector, TKey, ArrayLike | TKey['TArray']];\n\n/** @ignore */\nexport class DictionaryVector extends BaseVector> {\n public static from(...args: FromArgs): V>;\n public static from(input: VectorBuilderOptions>): Vector>;\n public static from(input: VectorBuilderOptionsAsync>): Promise>>;\n /** @nocollapse */\n public static from(...args: any[]) {\n if (args.length === 3) {\n const [values, indices, keys] = args as FromArgs;\n const type = new Dictionary(values.type, indices, null, null);\n return Vector.new(Data.Dictionary(type, 0, keys.length, 0, null, keys, values));\n }\n return vectorFromValuesWithType(() => args[0].type, args[0]);\n }\n\n constructor(data: Data>) {\n super(data);\n this.indices = Vector.new(data.clone(this.type.indices));\n }\n\n public readonly indices: V;\n\n public get dictionary() { return > this.data.dictionary; }\n public reverseLookup(value: T) { return this.dictionary.indexOf(value); }\n public getKey(idx: number): TKey['TValue'] | null { return this.indices.get(idx); }\n public getValue(key: number): T['TValue'] | null { return this.dictionary.get(key); }\n public setKey(idx: number, key: TKey['TValue'] | null) { return this.indices.set(idx, key); }\n public setValue(key: number, value: T['TValue'] | null) { return this.dictionary.set(key, value); }\n}\n\n(DictionaryVector.prototype as any).indices = null;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { FixedSizeBinary } from '../type';\n\n/** @ignore */\nexport class FixedSizeBinaryVector extends BaseVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { DataType, FixedSizeList } from '../type';\n\n/** @ignore */\nexport class FixedSizeListVector extends BaseVector> {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { VectorBuilderOptions } from './index';\nimport { vectorFromValuesWithType } from './index';\nimport { VectorBuilderOptionsAsync } from './index';\nimport { Float, Float16, Float32, Float64, FloatArray } from '../type';\nimport { VectorType as V, TypedArrayConstructor } from '../interfaces';\n\n/** @ignore */\ntype FloatVectorConstructors =\n typeof FloatVector |\n typeof Float16Vector |\n typeof Float32Vector |\n typeof Float64Vector ;\n\n/** @ignore */\ntype FromInput =\n FloatArray |\n Iterable |\n AsyncIterable |\n VectorBuilderOptions |\n VectorBuilderOptionsAsync ;\n\n/** @ignore */\ntype FloatArrayCtor = TypedArrayConstructor;\n\n/** @ignore */\nexport class FloatVector extends BaseVector {\n\n // Guaranteed zero-copy variants\n public static from(this: typeof FloatVector, input: Uint16Array): Float16Vector;\n public static from(this: typeof FloatVector, input: Float32Array): Float32Vector;\n public static from(this: typeof FloatVector, input: Float64Array): Float64Vector;\n\n // Zero-copy if input is a TypedArray of the same type as the\n // Vector that from is called on, otherwise uses the Builders\n public static from(this: typeof Float16Vector, input: FromInput): Float16Vector;\n public static from(this: typeof Float32Vector, input: FromInput): Float32Vector;\n public static from(this: typeof Float64Vector, input: FromInput): Float64Vector;\n\n // Not zero-copy\n public static from(this: typeof FloatVector, input: Iterable): V;\n public static from(this: typeof FloatVector, input: AsyncIterable): Promise>;\n public static from(this: typeof FloatVector, input: VectorBuilderOptions): Chunked;\n public static from(this: typeof FloatVector, input: VectorBuilderOptionsAsync): Promise>;\n /** @nocollapse */\n public static from(this: FloatVectorConstructors, input: FromInput) {\n\n let ArrowType = vectorTypeToDataType(this);\n\n if ((input instanceof ArrayBuffer) || ArrayBuffer.isView(input)) {\n let InputType = arrayTypeToDataType(input.constructor as FloatArrayCtor) || ArrowType;\n // Special case, infer the Arrow DataType from the input if calling the base\n // FloatVector.from with a TypedArray, e.g. `FloatVector.from(new Float32Array())`\n if (ArrowType === null) {\n ArrowType = InputType;\n }\n // If the DataType inferred from the Vector constructor matches the\n // DataType inferred from the input arguments, return zero-copy view\n if (ArrowType && ArrowType === InputType) {\n let type = new ArrowType();\n let length = input.byteLength / type.ArrayType.BYTES_PER_ELEMENT;\n // If the ArrowType is Float16 but the input type isn't a Uint16Array,\n // let the Float16Builder handle casting the input values to Uint16s.\n if (!convertTo16Bit(ArrowType, input.constructor)) {\n return Vector.new(Data.Float(type, 0, length, 0, null, input as FloatArray));\n }\n }\n }\n\n if (ArrowType) {\n // If the DataType inferred from the Vector constructor is different than\n // the DataType inferred from the input TypedArray, or if input isn't a\n // TypedArray, use the Builders to construct the result Vector\n return vectorFromValuesWithType(() => new ArrowType!() as T, input);\n }\n\n if ((input instanceof DataView) || (input instanceof ArrayBuffer)) {\n throw new TypeError(`Cannot infer float type from instance of ${input.constructor.name}`);\n }\n\n throw new TypeError('Unrecognized FloatVector input');\n }\n}\n\n/** @ignore */\nexport class Float16Vector extends FloatVector {\n // Since JS doesn't have half floats, `toArray()` returns a zero-copy slice\n // of the underlying Uint16Array data. This behavior ensures we don't incur\n // extra compute or copies if you're calling `toArray()` in order to create\n // a buffer for something like WebGL. Buf if you're using JS and want typed\n // arrays of 4-to-8-byte precision, these methods will enumerate the values\n // and clamp to the desired byte lengths.\n public toFloat32Array() { return new Float32Array(this as Iterable); }\n public toFloat64Array() { return new Float64Array(this as Iterable); }\n}\n\n/** @ignore */\nexport class Float32Vector extends FloatVector {}\n/** @ignore */\nexport class Float64Vector extends FloatVector {}\n\nconst convertTo16Bit = (typeCtor: any, dataCtor: any) => {\n return (typeCtor === Float16) && (dataCtor !== Uint16Array);\n};\n\n/** @ignore */\nconst arrayTypeToDataType = (ctor: FloatArrayCtor) => {\n switch (ctor) {\n case Uint16Array: return Float16;\n case Float32Array: return Float32;\n case Float64Array: return Float64;\n default: return null;\n }\n};\n\n/** @ignore */\nconst vectorTypeToDataType = (ctor: FloatVectorConstructors) => {\n switch (ctor) {\n case Float16Vector: return Float16;\n case Float32Vector: return Float32;\n case Float64Vector: return Float64;\n default: return null;\n }\n};\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { Interval, IntervalDayTime, IntervalYearMonth } from '../type';\n\n/** @ignore */\nexport class IntervalVector extends BaseVector {}\n/** @ignore */\nexport class IntervalDayTimeVector extends IntervalVector {}\n/** @ignore */\nexport class IntervalYearMonthVector extends IntervalVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { VectorBuilderOptions } from './index';\nimport { vectorFromValuesWithType } from './index';\nimport { VectorBuilderOptionsAsync } from './index';\nimport { BigInt64Array, BigUint64Array } from '../util/compat';\nimport { toBigInt64Array, toBigUint64Array } from '../util/buffer';\nimport { Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64, IntArray } from '../type';\nimport { VectorType as V, TypedArrayConstructor, BigIntArrayConstructor, BigIntArray } from '../interfaces';\n\n/** @ignore */\ntype IntVectorConstructors =\n typeof IntVector |\n typeof Int8Vector |\n typeof Int16Vector |\n typeof Int32Vector |\n typeof Uint8Vector |\n typeof Uint16Vector |\n typeof Uint32Vector |\n typeof Int64Vector |\n typeof Uint64Vector ;\n\n/** @ignore */\ntype FromInput =\n IntArray | BigIntArray |\n Iterable |\n AsyncIterable |\n VectorBuilderOptions |\n VectorBuilderOptionsAsync ;\n\n/** @ignore */\ntype FromArgs = [FromInput, boolean?];\n\n/** @ignore */\ntype IntArrayCtor = TypedArrayConstructor | BigIntArrayConstructor;\n\n/** @ignore */\nexport class IntVector extends BaseVector {\n\n // Guaranteed zero-copy variants\n public static from(this: typeof IntVector, input: Int8Array): Int8Vector;\n public static from(this: typeof IntVector, input: Int16Array): Int16Vector;\n public static from(this: typeof IntVector, input: Int32Array): Int32Vector;\n public static from(this: typeof IntVector, input: BigInt64Array): Int64Vector;\n public static from(this: typeof IntVector, input: Int32Array, is64bit: true): Int64Vector;\n public static from(this: typeof IntVector, input: Uint8Array): Uint8Vector;\n public static from(this: typeof IntVector, input: Uint16Array): Uint16Vector;\n public static from(this: typeof IntVector, input: Uint32Array): Uint32Vector;\n public static from(this: typeof IntVector, input: BigUint64Array): Uint64Vector;\n public static from(this: typeof IntVector, input: Uint32Array, is64bit: true): Uint64Vector;\n\n // Zero-copy if input is a TypedArray of the same type as the\n // Vector that from is called on, otherwise uses the Builders\n public static from(this: typeof Int8Vector, input: FromInput): Int8Vector;\n public static from(this: typeof Int16Vector, input: FromInput): Int16Vector;\n public static from(this: typeof Int32Vector, input: FromInput): Int32Vector;\n public static from(this: typeof Int64Vector, input: FromInput): Int64Vector;\n public static from(this: typeof Uint8Vector, input: FromInput): Uint8Vector;\n public static from(this: typeof Uint16Vector, input: FromInput): Uint16Vector;\n public static from(this: typeof Uint32Vector, input: FromInput): Uint32Vector;\n public static from(this: typeof Uint64Vector, input: FromInput): Uint64Vector;\n\n // Not zero-copy\n public static from(this: typeof IntVector, input: Iterable): V;\n public static from(this: typeof IntVector, input: AsyncIterable): Promise>;\n public static from(this: typeof IntVector, input: VectorBuilderOptions): Chunked;\n public static from(this: typeof IntVector, input: VectorBuilderOptionsAsync): Promise>;\n /** @nocollapse */\n public static from(this: IntVectorConstructors, ...args: FromArgs) {\n\n let [input, is64bit = false] = args;\n let ArrowType = vectorTypeToDataType(this, is64bit);\n\n if ((input instanceof ArrayBuffer) || ArrayBuffer.isView(input)) {\n let InputType = arrayTypeToDataType(input.constructor as IntArrayCtor, is64bit) || ArrowType;\n // Special case, infer the Arrow DataType from the input if calling the base\n // IntVector.from with a TypedArray, e.g. `IntVector.from(new Int32Array())`\n if (ArrowType === null) {\n ArrowType = InputType;\n }\n // If the DataType inferred from the Vector constructor matches the\n // DataType inferred from the input arguments, return zero-copy view\n if (ArrowType && ArrowType === InputType) {\n let type = new ArrowType();\n let length = input.byteLength / type.ArrayType.BYTES_PER_ELEMENT;\n // If the ArrowType is 64bit but the input type is 32bit pairs, update the logical length\n if (convert32To64Bit(ArrowType, input.constructor)) {\n length *= 0.5;\n }\n return Vector.new(Data.Int(type, 0, length, 0, null, input as IntArray));\n }\n }\n\n if (ArrowType) {\n // If the DataType inferred from the Vector constructor is different than\n // the DataType inferred from the input TypedArray, or if input isn't a\n // TypedArray, use the Builders to construct the result Vector\n return vectorFromValuesWithType(() => new ArrowType!() as T, input);\n }\n\n if ((input instanceof DataView) || (input instanceof ArrayBuffer)) {\n throw new TypeError(`Cannot infer integer type from instance of ${input.constructor.name}`);\n }\n\n throw new TypeError('Unrecognized IntVector input');\n }\n}\n\n/** @ignore */\nexport class Int8Vector extends IntVector {}\n/** @ignore */\nexport class Int16Vector extends IntVector {}\n/** @ignore */\nexport class Int32Vector extends IntVector {}\n/** @ignore */\nexport class Int64Vector extends IntVector {\n public toBigInt64Array() {\n return toBigInt64Array(this.values);\n }\n // @ts-ignore\n private _values64: BigInt64Array;\n public get values64(): BigInt64Array {\n return this._values64 || (this._values64 = this.toBigInt64Array());\n }\n}\n\n/** @ignore */\nexport class Uint8Vector extends IntVector {}\n/** @ignore */\nexport class Uint16Vector extends IntVector {}\n/** @ignore */\nexport class Uint32Vector extends IntVector {}\n/** @ignore */\nexport class Uint64Vector extends IntVector {\n public toBigUint64Array() {\n return toBigUint64Array(this.values);\n }\n // @ts-ignore\n private _values64: BigUint64Array;\n public get values64(): BigUint64Array {\n return this._values64 || (this._values64 = this.toBigUint64Array());\n }\n}\n\nconst convert32To64Bit = (typeCtor: any, dataCtor: any) => {\n return (typeCtor === Int64 || typeCtor === Uint64) &&\n (dataCtor === Int32Array || dataCtor === Uint32Array);\n};\n\n/** @ignore */\nconst arrayTypeToDataType = (ctor: IntArrayCtor, is64bit: boolean) => {\n switch (ctor) {\n case Int8Array: return Int8;\n case Int16Array: return Int16;\n case Int32Array: return is64bit ? Int64 : Int32;\n case BigInt64Array: return Int64;\n case Uint8Array: return Uint8;\n case Uint16Array: return Uint16;\n case Uint32Array: return is64bit ? Uint64 : Uint32;\n case BigUint64Array: return Uint64;\n default: return null;\n }\n};\n\n/** @ignore */\nconst vectorTypeToDataType = (ctor: IntVectorConstructors, is64bit: boolean) => {\n switch (ctor) {\n case Int8Vector: return Int8;\n case Int16Vector: return Int16;\n case Int32Vector: return is64bit ? Int64 : Int32;\n case Int64Vector: return Int64;\n case Uint8Vector: return Uint8;\n case Uint16Vector: return Uint16;\n case Uint32Vector: return is64bit ? Uint64 : Uint32;\n case Uint64Vector: return Uint64;\n default: return null;\n }\n};\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { DataType, List } from '../type';\n\n/** @ignore */\nexport class ListVector extends BaseVector> {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { MapRow } from './row';\nimport { Field } from '../schema';\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { DataType, Map_, Struct, List } from '../type';\n\n/** @ignore */\nexport class MapVector extends BaseVector> {\n public asList() {\n const child = this.type.children[0] as Field>;\n return Vector.new(this.data.clone(new List>(child)));\n }\n public bind(index: number): Map_['TValue'] {\n const child = this.getChildAt>(0);\n const { [index]: begin, [index + 1]: end } = this.valueOffsets;\n return new MapRow(child!.slice(begin, end));\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Null } from '../type';\nimport { BaseVector } from './base';\n\n/** @ignore */\nexport class NullVector extends BaseVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { StructRow } from './row';\nimport { BaseVector } from './base';\nimport { DataType, Struct } from '../type';\n\n/** @ignore */ const kRowIndex = Symbol.for('rowIndex');\n/** @ignore */\nexport class StructVector extends BaseVector> {\n // @ts-ignore\n private _row: StructRow;\n public bind(index: number): Struct['TValue'] {\n const proto = this._row || (this._row = new StructRow(this));\n const bound = Object.create(proto);\n bound[kRowIndex] = index;\n return bound;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond } from '../type';\n\n/** @ignore */\nexport class TimestampVector extends BaseVector {}\n/** @ignore */\nexport class TimestampSecondVector extends TimestampVector {}\n/** @ignore */\nexport class TimestampMillisecondVector extends TimestampVector {}\n/** @ignore */\nexport class TimestampMicrosecondVector extends TimestampVector {}\n/** @ignore */\nexport class TimestampNanosecondVector extends TimestampVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond } from '../type';\n\n/** @ignore */\nexport class TimeVector extends BaseVector {}\n/** @ignore */\nexport class TimeSecondVector extends TimeVector {}\n/** @ignore */\nexport class TimeMillisecondVector extends TimeVector {}\n/** @ignore */\nexport class TimeMicrosecondVector extends TimeVector {}\n/** @ignore */\nexport class TimeNanosecondVector extends TimeVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BaseVector } from './base';\nimport { Union, DenseUnion, SparseUnion} from '../type';\n\n/** @ignore */\nexport class UnionVector extends BaseVector {\n public get typeIdToChildIndex() { return this.data.type.typeIdToChildIndex; }\n}\n\n/** @ignore */\nexport class DenseUnionVector extends UnionVector {\n public get valueOffsets() { return this.data.valueOffsets!; }\n}\n\n/** @ignore */\nexport class SparseUnionVector extends UnionVector {}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { Binary, Utf8 } from '../type';\nimport { VectorBuilderOptions } from './index';\nimport { vectorFromValuesWithType } from './index';\nimport { VectorBuilderOptionsAsync } from './index';\n\n/** @ignore */\nexport class Utf8Vector extends BaseVector {\n public static from(input: Iterable): Utf8Vector;\n public static from(input: AsyncIterable): Promise;\n public static from(input: VectorBuilderOptions): Chunked;\n public static from(input: VectorBuilderOptionsAsync): Promise>;\n /** @nocollapse */\n public static from(input: Iterable | AsyncIterable | VectorBuilderOptions | VectorBuilderOptionsAsync) {\n return vectorFromValuesWithType(() => new Utf8(), input);\n }\n public asBinary() {\n return Vector.new(this.data.clone(new Binary()));\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/** @ignore */\nexport function partial0(visit: (node: T) => any) {\n return function(this: T) { return visit(this); };\n}\n\n/** @ignore */\nexport function partial1(visit: (node: T, a: any) => any) {\n return function(this: T, a: any) { return visit(this, a); };\n}\n\n/** @ignore */\nexport function partial2(visit: (node: T, a: any, b: any) => any) {\n return function(this: T, a: any, b: any) { return visit(this, a, b); };\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { BN } from '../util/bn';\nimport { Visitor } from '../visitor';\nimport { decodeUtf8 } from '../util/utf8';\nimport { VectorType } from '../interfaces';\nimport { uint16ToFloat64 } from '../util/math';\nimport { Type, UnionMode, Precision, DateUnit, TimeUnit, IntervalUnit } from '../enum';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface GetVisitor extends Visitor {\n visit (node: T, index: number): T['TValue'];\n visitMany (nodes: T[], indices: number[]): T['TValue'][];\n getVisitFn (node: T): (vector: VectorType, index: number) => VectorType['TValue'];\n getVisitFn(node: VectorType | Data | T): (vector: VectorType, index: number) => VectorType['TValue'];\n visitNull (vector: VectorType, index: number): T['TValue'];\n visitBool (vector: VectorType, index: number): T['TValue'];\n visitInt (vector: VectorType, index: number): T['TValue'];\n visitInt8 (vector: VectorType, index: number): T['TValue'];\n visitInt16 (vector: VectorType, index: number): T['TValue'];\n visitInt32 (vector: VectorType, index: number): T['TValue'];\n visitInt64 (vector: VectorType, index: number): T['TValue'];\n visitUint8 (vector: VectorType, index: number): T['TValue'];\n visitUint16 (vector: VectorType, index: number): T['TValue'];\n visitUint32 (vector: VectorType, index: number): T['TValue'];\n visitUint64 (vector: VectorType, index: number): T['TValue'];\n visitFloat (vector: VectorType, index: number): T['TValue'];\n visitFloat16 (vector: VectorType, index: number): T['TValue'];\n visitFloat32 (vector: VectorType, index: number): T['TValue'];\n visitFloat64 (vector: VectorType, index: number): T['TValue'];\n visitUtf8 (vector: VectorType, index: number): T['TValue'];\n visitBinary (vector: VectorType, index: number): T['TValue'];\n visitFixedSizeBinary (vector: VectorType, index: number): T['TValue'];\n visitDate (vector: VectorType, index: number): T['TValue'];\n visitDateDay (vector: VectorType, index: number): T['TValue'];\n visitDateMillisecond (vector: VectorType, index: number): T['TValue'];\n visitTimestamp (vector: VectorType, index: number): T['TValue'];\n visitTimestampSecond (vector: VectorType, index: number): T['TValue'];\n visitTimestampMillisecond (vector: VectorType, index: number): T['TValue'];\n visitTimestampMicrosecond (vector: VectorType, index: number): T['TValue'];\n visitTimestampNanosecond (vector: VectorType, index: number): T['TValue'];\n visitTime (vector: VectorType, index: number): T['TValue'];\n visitTimeSecond (vector: VectorType, index: number): T['TValue'];\n visitTimeMillisecond (vector: VectorType, index: number): T['TValue'];\n visitTimeMicrosecond (vector: VectorType, index: number): T['TValue'];\n visitTimeNanosecond (vector: VectorType, index: number): T['TValue'];\n visitDecimal (vector: VectorType, index: number): T['TValue'];\n visitList (vector: VectorType, index: number): T['TValue'];\n visitStruct (vector: VectorType, index: number): T['TValue'];\n visitUnion (vector: VectorType, index: number): T['TValue'];\n visitDenseUnion (vector: VectorType, index: number): T['TValue'];\n visitSparseUnion (vector: VectorType, index: number): T['TValue'];\n visitDictionary (vector: VectorType, index: number): T['TValue'];\n visitInterval (vector: VectorType, index: number): T['TValue'];\n visitIntervalDayTime (vector: VectorType, index: number): T['TValue'];\n visitIntervalYearMonth (vector: VectorType, index: number): T['TValue'];\n visitFixedSizeList (vector: VectorType, index: number): T['TValue'];\n visitMap (vector: VectorType, index: number): T['TValue'];\n}\n\n/** @ignore */\nexport class GetVisitor extends Visitor {}\n\n/** @ignore */const epochDaysToMs = (data: Int32Array, index: number) => 86400000 * data[index];\n/** @ignore */const epochMillisecondsLongToMs = (data: Int32Array, index: number) => 4294967296 * (data[index + 1]) + (data[index] >>> 0);\n/** @ignore */const epochMicrosecondsLongToMs = (data: Int32Array, index: number) => 4294967296 * (data[index + 1] / 1000) + ((data[index] >>> 0) / 1000);\n/** @ignore */const epochNanosecondsLongToMs = (data: Int32Array, index: number) => 4294967296 * (data[index + 1] / 1000000) + ((data[index] >>> 0) / 1000000);\n\n/** @ignore */const epochMillisecondsToDate = (epochMs: number) => new Date(epochMs);\n/** @ignore */const epochDaysToDate = (data: Int32Array, index: number) => epochMillisecondsToDate(epochDaysToMs(data, index));\n/** @ignore */const epochMillisecondsLongToDate = (data: Int32Array, index: number) => epochMillisecondsToDate(epochMillisecondsLongToMs(data, index));\n\n/** @ignore */\nconst getNull = (_vector: VectorType, _index: number): T['TValue'] => null;\n/** @ignore */\nconst getVariableWidthBytes = (values: Uint8Array, valueOffsets: Int32Array, index: number) => {\n const { [index]: x, [index + 1]: y } = valueOffsets;\n return x != null && y != null ? values.subarray(x, y) : null as any;\n};\n\n/** @ignore */\nconst getBool = ({ offset, values }: VectorType, index: number): T['TValue'] => {\n const idx = offset + index;\n const byte = values[idx >> 3];\n return (byte & 1 << (idx % 8)) !== 0;\n};\n\n/** @ignore */\ntype Numeric1X = Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32 | Float32 | Float64;\n/** @ignore */\ntype Numeric2X = Int64 | Uint64;\n\n/** @ignore */\nconst getDateDay = ({ values }: VectorType, index: number): T['TValue'] => epochDaysToDate(values, index);\n/** @ignore */\nconst getDateMillisecond = ({ values }: VectorType, index: number): T['TValue'] => epochMillisecondsLongToDate(values, index * 2);\n/** @ignore */\nconst getNumeric = ({ stride, values }: VectorType, index: number): T['TValue'] => values[stride * index];\n/** @ignore */\nconst getFloat16 = ({ stride, values }: VectorType, index: number): T['TValue'] => uint16ToFloat64(values[stride * index]);\n/** @ignore */\nconst getBigInts = ({ stride, values, type }: VectorType, index: number): T['TValue'] => BN.new(values.subarray(stride * index, stride * (index + 1)), type.isSigned);\n/** @ignore */\nconst getFixedSizeBinary = ({ stride, values }: VectorType, index: number): T['TValue'] => values.subarray(stride * index, stride * (index + 1));\n\n/** @ignore */\nconst getBinary = ({ values, valueOffsets }: VectorType, index: number): T['TValue'] => getVariableWidthBytes(values, valueOffsets, index);\n/** @ignore */\nconst getUtf8 = ({ values, valueOffsets }: VectorType, index: number): T['TValue'] => {\n const bytes = getVariableWidthBytes(values, valueOffsets, index);\n return bytes !== null ? decodeUtf8(bytes) : null as any;\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst getInt = (vector: VectorType, index: number): T['TValue'] => (\n vector.type.bitWidth < 64\n ? getNumeric(vector as VectorType, index)\n : getBigInts(vector as VectorType, index)\n);\n\n/* istanbul ignore next */\n/** @ignore */\nconst getFloat = (vector: VectorType, index: number): T['TValue'] => (\n vector.type.precision !== Precision.HALF\n ? getNumeric(vector as VectorType, index)\n : getFloat16(vector as VectorType, index)\n);\n\n/* istanbul ignore next */\n/** @ignore */\nconst getDate = (vector: VectorType, index: number): T['TValue'] => (\n vector.type.unit === DateUnit.DAY\n ? getDateDay(vector as VectorType, index)\n : getDateMillisecond(vector as VectorType, index)\n);\n\n/** @ignore */\nconst getTimestampSecond = ({ values }: VectorType, index: number): T['TValue'] => 1000 * epochMillisecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampMillisecond = ({ values }: VectorType, index: number): T['TValue'] => epochMillisecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampMicrosecond = ({ values }: VectorType, index: number): T['TValue'] => epochMicrosecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampNanosecond = ({ values }: VectorType, index: number): T['TValue'] => epochNanosecondsLongToMs(values, index * 2);\n/* istanbul ignore next */\n/** @ignore */\nconst getTimestamp = (vector: VectorType, index: number): T['TValue'] => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return getTimestampSecond(vector as VectorType, index);\n case TimeUnit.MILLISECOND: return getTimestampMillisecond(vector as VectorType, index);\n case TimeUnit.MICROSECOND: return getTimestampMicrosecond(vector as VectorType, index);\n case TimeUnit.NANOSECOND: return getTimestampNanosecond(vector as VectorType, index);\n }\n};\n\n/** @ignore */\nconst getTimeSecond = ({ values, stride }: VectorType, index: number): T['TValue'] => values[stride * index];\n/** @ignore */\nconst getTimeMillisecond = ({ values, stride }: VectorType, index: number): T['TValue'] => values[stride * index];\n/** @ignore */\nconst getTimeMicrosecond = ({ values }: VectorType, index: number): T['TValue'] => BN.signed(values.subarray(2 * index, 2 * (index + 1)));\n/** @ignore */\nconst getTimeNanosecond = ({ values }: VectorType, index: number): T['TValue'] => BN.signed(values.subarray(2 * index, 2 * (index + 1)));\n/* istanbul ignore next */\n/** @ignore */\nconst getTime = (vector: VectorType, index: number): T['TValue'] => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return getTimeSecond(vector as VectorType, index);\n case TimeUnit.MILLISECOND: return getTimeMillisecond(vector as VectorType, index);\n case TimeUnit.MICROSECOND: return getTimeMicrosecond(vector as VectorType, index);\n case TimeUnit.NANOSECOND: return getTimeNanosecond(vector as VectorType, index);\n }\n};\n\n/** @ignore */\nconst getDecimal = ({ values }: VectorType, index: number): T['TValue'] => BN.decimal(values.subarray(4 * index, 4 * (index + 1)));\n\n/** @ignore */\nconst getList = (vector: VectorType, index: number): T['TValue'] => {\n const child = vector.getChildAt(0)!, { valueOffsets, stride } = vector;\n return child.slice(valueOffsets[index * stride], valueOffsets[(index * stride) + 1]) as T['TValue'];\n};\n\n/** @ignore */\nconst getMap = (vector: VectorType, index: number): T['TValue'] => {\n return vector.bind(index) as T['TValue'];\n};\n\n/** @ignore */\nconst getStruct = (vector: VectorType, index: number): T['TValue'] => {\n return vector.bind(index) as T['TValue'];\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst getUnion = <\n V extends VectorType | VectorType | VectorType\n>(vector: V, index: number): V['TValue'] => {\n return vector.type.mode === UnionMode.Dense ?\n getDenseUnion(vector as VectorType, index) :\n getSparseUnion(vector as VectorType, index);\n};\n\n/** @ignore */\nconst getDenseUnion = (vector: VectorType, index: number): T['TValue'] => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n return child ? child.get(vector.valueOffsets[index]) : null;\n};\n\n/** @ignore */\nconst getSparseUnion = (vector: VectorType, index: number): T['TValue'] => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n return child ? child.get(index) : null;\n};\n\n/** @ignore */\nconst getDictionary = (vector: VectorType, index: number): T['TValue'] => {\n return vector.getValue(vector.getKey(index)!);\n};\n\n/* istanbul ignore next */\n/** @ignore */\nconst getInterval = (vector: VectorType, index: number): T['TValue'] =>\n (vector.type.unit === IntervalUnit.DAY_TIME)\n ? getIntervalDayTime(vector as VectorType, index)\n : getIntervalYearMonth(vector as VectorType, index);\n\n/** @ignore */\nconst getIntervalDayTime = ({ values }: VectorType, index: number): T['TValue'] => values.subarray(2 * index, 2 * (index + 1));\n\n/** @ignore */\nconst getIntervalYearMonth = ({ values }: VectorType, index: number): T['TValue'] => {\n const interval = values[index];\n const int32s = new Int32Array(2);\n int32s[0] = interval / 12 | 0; /* years */\n int32s[1] = interval % 12 | 0; /* months */\n return int32s;\n};\n\n/** @ignore */\nconst getFixedSizeList = (vector: VectorType, index: number): T['TValue'] => {\n const child = vector.getChildAt(0)!, { stride } = vector;\n return child.slice(index * stride, (index + 1) * stride) as T['TValue'];\n};\n\nGetVisitor.prototype.visitNull = getNull;\nGetVisitor.prototype.visitBool = getBool;\nGetVisitor.prototype.visitInt = getInt;\nGetVisitor.prototype.visitInt8 = getNumeric;\nGetVisitor.prototype.visitInt16 = getNumeric;\nGetVisitor.prototype.visitInt32 = getNumeric;\nGetVisitor.prototype.visitInt64 = getBigInts;\nGetVisitor.prototype.visitUint8 = getNumeric;\nGetVisitor.prototype.visitUint16 = getNumeric;\nGetVisitor.prototype.visitUint32 = getNumeric;\nGetVisitor.prototype.visitUint64 = getBigInts;\nGetVisitor.prototype.visitFloat = getFloat;\nGetVisitor.prototype.visitFloat16 = getFloat16;\nGetVisitor.prototype.visitFloat32 = getNumeric;\nGetVisitor.prototype.visitFloat64 = getNumeric;\nGetVisitor.prototype.visitUtf8 = getUtf8;\nGetVisitor.prototype.visitBinary = getBinary;\nGetVisitor.prototype.visitFixedSizeBinary = getFixedSizeBinary;\nGetVisitor.prototype.visitDate = getDate;\nGetVisitor.prototype.visitDateDay = getDateDay;\nGetVisitor.prototype.visitDateMillisecond = getDateMillisecond;\nGetVisitor.prototype.visitTimestamp = getTimestamp;\nGetVisitor.prototype.visitTimestampSecond = getTimestampSecond;\nGetVisitor.prototype.visitTimestampMillisecond = getTimestampMillisecond;\nGetVisitor.prototype.visitTimestampMicrosecond = getTimestampMicrosecond;\nGetVisitor.prototype.visitTimestampNanosecond = getTimestampNanosecond;\nGetVisitor.prototype.visitTime = getTime;\nGetVisitor.prototype.visitTimeSecond = getTimeSecond;\nGetVisitor.prototype.visitTimeMillisecond = getTimeMillisecond;\nGetVisitor.prototype.visitTimeMicrosecond = getTimeMicrosecond;\nGetVisitor.prototype.visitTimeNanosecond = getTimeNanosecond;\nGetVisitor.prototype.visitDecimal = getDecimal;\nGetVisitor.prototype.visitList = getList;\nGetVisitor.prototype.visitStruct = getStruct;\nGetVisitor.prototype.visitUnion = getUnion;\nGetVisitor.prototype.visitDenseUnion = getDenseUnion;\nGetVisitor.prototype.visitSparseUnion = getSparseUnion;\nGetVisitor.prototype.visitDictionary = getDictionary;\nGetVisitor.prototype.visitInterval = getInterval;\nGetVisitor.prototype.visitIntervalDayTime = getIntervalDayTime;\nGetVisitor.prototype.visitIntervalYearMonth = getIntervalYearMonth;\nGetVisitor.prototype.visitFixedSizeList = getFixedSizeList;\nGetVisitor.prototype.visitMap = getMap;\n\n/** @ignore */\nexport const instance = new GetVisitor();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { getBool, iterateBits } from '../util/bit';\nimport { createElementComparator } from '../util/vector';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface IndexOfVisitor extends Visitor {\n visit (node: T, value: T['TValue'] | null, index?: number): number;\n visitMany (nodes: T[], values: (T['TValue'] | null)[], indices: (number | undefined)[]): number[];\n getVisitFn (node: T): (vector: VectorType, value: VectorType['TValue'] | null, index?: number) => number;\n getVisitFn(node: VectorType | Data | T): (vector: VectorType, value: T['TValue'] | null, index?: number) => number;\n visitNull (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitBool (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitInt (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitInt8 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitInt16 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitInt32 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitInt64 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitUint8 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitUint16 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitUint32 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitUint64 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitFloat (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitFloat16 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitFloat32 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitFloat64 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitUtf8 (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitBinary (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitFixedSizeBinary (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitDate (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitDateDay (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitDateMillisecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimestamp (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimestampSecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimestampMillisecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimestampMicrosecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimestampNanosecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTime (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimeSecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimeMillisecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimeMicrosecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitTimeNanosecond (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitDecimal (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitList (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitStruct (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitUnion (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitDenseUnion (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitSparseUnion (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitDictionary (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitInterval (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitIntervalDayTime (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitIntervalYearMonth (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitFixedSizeList (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n visitMap (vector: VectorType, value: T['TValue'] | null, index?: number): number;\n}\n\n/** @ignore */\nexport class IndexOfVisitor extends Visitor {}\n\n/** @ignore */\nfunction nullIndexOf(vector: VectorType, searchElement?: null) {\n // if you're looking for nulls and the vector isn't empty, we've got 'em!\n return searchElement === null && vector.length > 0 ? 0 : -1;\n}\n\n/** @ignore */\nfunction indexOfNull(vector: VectorType, fromIndex?: number): number {\n const { nullBitmap } = vector;\n if (!nullBitmap || vector.nullCount <= 0) {\n return -1;\n }\n let i = 0;\n for (const isValid of iterateBits(nullBitmap, vector.data.offset + (fromIndex || 0), vector.length, nullBitmap, getBool)) {\n if (!isValid) { return i; }\n ++i;\n }\n return -1;\n}\n\n/** @ignore */\nfunction indexOfValue(vector: VectorType, searchElement?: T['TValue'] | null, fromIndex?: number): number {\n if (searchElement === undefined) { return -1; }\n if (searchElement === null) { return indexOfNull(vector, fromIndex); }\n const compare = createElementComparator(searchElement);\n for (let i = (fromIndex || 0) - 1, n = vector.length; ++i < n;) {\n if (compare(vector.get(i))) {\n return i;\n }\n }\n return -1;\n}\n\n/** @ignore */\nfunction indexOfUnion(vector: VectorType, searchElement?: T['TValue'] | null, fromIndex?: number): number {\n // Unions are special -- they do have a nullBitmap, but so can their children.\n // If the searchElement is null, we don't know whether it came from the Union's\n // bitmap or one of its childrens'. So we don't interrogate the Union's bitmap,\n // since that will report the wrong index if a child has a null before the Union.\n const compare = createElementComparator(searchElement);\n for (let i = (fromIndex || 0) - 1, n = vector.length; ++i < n;) {\n if (compare(vector.get(i))) {\n return i;\n }\n }\n return -1;\n}\n\nIndexOfVisitor.prototype.visitNull = nullIndexOf;\nIndexOfVisitor.prototype.visitBool = indexOfValue;\nIndexOfVisitor.prototype.visitInt = indexOfValue;\nIndexOfVisitor.prototype.visitInt8 = indexOfValue;\nIndexOfVisitor.prototype.visitInt16 = indexOfValue;\nIndexOfVisitor.prototype.visitInt32 = indexOfValue;\nIndexOfVisitor.prototype.visitInt64 = indexOfValue;\nIndexOfVisitor.prototype.visitUint8 = indexOfValue;\nIndexOfVisitor.prototype.visitUint16 = indexOfValue;\nIndexOfVisitor.prototype.visitUint32 = indexOfValue;\nIndexOfVisitor.prototype.visitUint64 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat = indexOfValue;\nIndexOfVisitor.prototype.visitFloat16 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat32 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat64 = indexOfValue;\nIndexOfVisitor.prototype.visitUtf8 = indexOfValue;\nIndexOfVisitor.prototype.visitBinary = indexOfValue;\nIndexOfVisitor.prototype.visitFixedSizeBinary = indexOfValue;\nIndexOfVisitor.prototype.visitDate = indexOfValue;\nIndexOfVisitor.prototype.visitDateDay = indexOfValue;\nIndexOfVisitor.prototype.visitDateMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestamp = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampSecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampMicrosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampNanosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTime = indexOfValue;\nIndexOfVisitor.prototype.visitTimeSecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeMicrosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeNanosecond = indexOfValue;\nIndexOfVisitor.prototype.visitDecimal = indexOfValue;\nIndexOfVisitor.prototype.visitList = indexOfValue;\nIndexOfVisitor.prototype.visitStruct = indexOfValue;\nIndexOfVisitor.prototype.visitUnion = indexOfValue;\nIndexOfVisitor.prototype.visitDenseUnion = indexOfUnion;\nIndexOfVisitor.prototype.visitSparseUnion = indexOfUnion;\nIndexOfVisitor.prototype.visitDictionary = indexOfValue;\nIndexOfVisitor.prototype.visitInterval = indexOfValue;\nIndexOfVisitor.prototype.visitIntervalDayTime = indexOfValue;\nIndexOfVisitor.prototype.visitIntervalYearMonth = indexOfValue;\nIndexOfVisitor.prototype.visitFixedSizeList = indexOfValue;\nIndexOfVisitor.prototype.visitMap = indexOfValue;\n\n/** @ignore */\nexport const instance = new IndexOfVisitor();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { iterateBits } from '../util/bit';\nimport { instance as getVisitor } from './get';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface IteratorVisitor extends Visitor {\n visit(node: T): IterableIterator;\n visitMany (nodes: T[]): IterableIterator[];\n getVisitFn(node: T): (vector: VectorType) => IterableIterator['TValue'] | null>;\n getVisitFn(node: VectorType | Data | T): (vector: VectorType) => IterableIterator['TValue'] | null>;\n visitNull (vector: VectorType): IterableIterator;\n visitBool (vector: VectorType): IterableIterator;\n visitInt (vector: VectorType): IterableIterator;\n visitInt8 (vector: VectorType): IterableIterator;\n visitInt16 (vector: VectorType): IterableIterator;\n visitInt32 (vector: VectorType): IterableIterator;\n visitInt64 (vector: VectorType): IterableIterator;\n visitUint8 (vector: VectorType): IterableIterator;\n visitUint16 (vector: VectorType): IterableIterator;\n visitUint32 (vector: VectorType): IterableIterator;\n visitUint64 (vector: VectorType): IterableIterator;\n visitFloat (vector: VectorType): IterableIterator;\n visitFloat16 (vector: VectorType): IterableIterator;\n visitFloat32 (vector: VectorType): IterableIterator;\n visitFloat64 (vector: VectorType): IterableIterator;\n visitUtf8 (vector: VectorType): IterableIterator;\n visitBinary (vector: VectorType): IterableIterator;\n visitFixedSizeBinary (vector: VectorType): IterableIterator;\n visitDate (vector: VectorType): IterableIterator;\n visitDateDay (vector: VectorType): IterableIterator;\n visitDateMillisecond (vector: VectorType): IterableIterator;\n visitTimestamp (vector: VectorType): IterableIterator;\n visitTimestampSecond (vector: VectorType): IterableIterator;\n visitTimestampMillisecond (vector: VectorType): IterableIterator;\n visitTimestampMicrosecond (vector: VectorType): IterableIterator;\n visitTimestampNanosecond (vector: VectorType): IterableIterator;\n visitTime (vector: VectorType): IterableIterator;\n visitTimeSecond (vector: VectorType): IterableIterator;\n visitTimeMillisecond (vector: VectorType): IterableIterator;\n visitTimeMicrosecond (vector: VectorType): IterableIterator;\n visitTimeNanosecond (vector: VectorType): IterableIterator;\n visitDecimal (vector: VectorType): IterableIterator;\n visitList (vector: VectorType): IterableIterator;\n visitStruct (vector: VectorType): IterableIterator;\n visitUnion (vector: VectorType): IterableIterator;\n visitDenseUnion (vector: VectorType): IterableIterator;\n visitSparseUnion (vector: VectorType): IterableIterator;\n visitDictionary (vector: VectorType): IterableIterator;\n visitInterval (vector: VectorType): IterableIterator;\n visitIntervalDayTime (vector: VectorType): IterableIterator;\n visitIntervalYearMonth (vector: VectorType): IterableIterator;\n visitFixedSizeList (vector: VectorType): IterableIterator;\n visitMap (vector: VectorType): IterableIterator;\n}\n\n/** @ignore */\nexport class IteratorVisitor extends Visitor {}\n\n/** @ignore */\nfunction nullableIterator(vector: VectorType): IterableIterator {\n const getFn = getVisitor.getVisitFn(vector);\n return iterateBits(\n vector.nullBitmap, vector.offset, vector.length, vector,\n (vec: VectorType, idx: number, nullByte: number, nullBit: number) =>\n ((nullByte & 1 << nullBit) !== 0) ? getFn(vec, idx) : null\n );\n}\n\n/** @ignore */\nfunction vectorIterator(vector: VectorType): IterableIterator {\n\n // If nullable, iterate manually\n if (vector.nullCount > 0) {\n return nullableIterator(vector);\n }\n\n const { type, typeId, length } = vector;\n\n // Fast case, defer to native iterators if possible\n if (vector.stride === 1 && (\n (typeId === Type.Timestamp) ||\n (typeId === Type.Int && (type as Int).bitWidth !== 64) ||\n (typeId === Type.Time && (type as Time).bitWidth !== 64) ||\n (typeId === Type.Float && (type as Float).precision > 0 /* Precision.HALF */)\n )) {\n return vector.values.subarray(0, length)[Symbol.iterator]();\n }\n\n // Otherwise, iterate manually\n return (function* (getFn) {\n for (let index = -1; ++index < length;) {\n yield getFn(vector, index);\n }\n })(getVisitor.getVisitFn(vector));\n}\n\nIteratorVisitor.prototype.visitNull = vectorIterator;\nIteratorVisitor.prototype.visitBool = vectorIterator;\nIteratorVisitor.prototype.visitInt = vectorIterator;\nIteratorVisitor.prototype.visitInt8 = vectorIterator;\nIteratorVisitor.prototype.visitInt16 = vectorIterator;\nIteratorVisitor.prototype.visitInt32 = vectorIterator;\nIteratorVisitor.prototype.visitInt64 = vectorIterator;\nIteratorVisitor.prototype.visitUint8 = vectorIterator;\nIteratorVisitor.prototype.visitUint16 = vectorIterator;\nIteratorVisitor.prototype.visitUint32 = vectorIterator;\nIteratorVisitor.prototype.visitUint64 = vectorIterator;\nIteratorVisitor.prototype.visitFloat = vectorIterator;\nIteratorVisitor.prototype.visitFloat16 = vectorIterator;\nIteratorVisitor.prototype.visitFloat32 = vectorIterator;\nIteratorVisitor.prototype.visitFloat64 = vectorIterator;\nIteratorVisitor.prototype.visitUtf8 = vectorIterator;\nIteratorVisitor.prototype.visitBinary = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeBinary = vectorIterator;\nIteratorVisitor.prototype.visitDate = vectorIterator;\nIteratorVisitor.prototype.visitDateDay = vectorIterator;\nIteratorVisitor.prototype.visitDateMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestamp = vectorIterator;\nIteratorVisitor.prototype.visitTimestampSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitTime = vectorIterator;\nIteratorVisitor.prototype.visitTimeSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitDecimal = vectorIterator;\nIteratorVisitor.prototype.visitList = vectorIterator;\nIteratorVisitor.prototype.visitStruct = vectorIterator;\nIteratorVisitor.prototype.visitUnion = vectorIterator;\nIteratorVisitor.prototype.visitDenseUnion = vectorIterator;\nIteratorVisitor.prototype.visitSparseUnion = vectorIterator;\nIteratorVisitor.prototype.visitDictionary = vectorIterator;\nIteratorVisitor.prototype.visitInterval = vectorIterator;\nIteratorVisitor.prototype.visitIntervalDayTime = vectorIterator;\nIteratorVisitor.prototype.visitIntervalYearMonth = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeList = vectorIterator;\nIteratorVisitor.prototype.visitMap = vectorIterator;\n\n/** @ignore */\nexport const instance = new IteratorVisitor();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { instance as iteratorVisitor } from './iterator';\nimport {\n DataType, Dictionary,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n Float, Float16, Float32, Float64,\n Int, Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64,\n Date_, DateDay, DateMillisecond,\n Interval, IntervalDayTime, IntervalYearMonth,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Union, DenseUnion, SparseUnion,\n} from '../type';\n\n/** @ignore */\nexport interface ToArrayVisitor extends Visitor {\n visit(node: T): T['TArray'];\n visitMany(nodes: T[]): T['TArray'][];\n getVisitFn(node: T): (vector: VectorType) => VectorType['TArray'];\n getVisitFn(node: VectorType | Data | T): (vector: VectorType) => VectorType['TArray'];\n visitNull (vector: VectorType): VectorType['TArray'];\n visitBool (vector: VectorType): VectorType['TArray'];\n visitInt (vector: VectorType): VectorType['TArray'];\n visitInt8 (vector: VectorType): VectorType['TArray'];\n visitInt16 (vector: VectorType): VectorType['TArray'];\n visitInt32 (vector: VectorType): VectorType['TArray'];\n visitInt64 (vector: VectorType): VectorType['TArray'];\n visitUint8 (vector: VectorType): VectorType['TArray'];\n visitUint16 (vector: VectorType): VectorType['TArray'];\n visitUint32 (vector: VectorType): VectorType['TArray'];\n visitUint64 (vector: VectorType): VectorType['TArray'];\n visitFloat (vector: VectorType): VectorType['TArray'];\n visitFloat16 (vector: VectorType): VectorType['TArray'];\n visitFloat32 (vector: VectorType): VectorType['TArray'];\n visitFloat64 (vector: VectorType): VectorType['TArray'];\n visitUtf8 (vector: VectorType): VectorType['TArray'];\n visitBinary (vector: VectorType): VectorType['TArray'];\n visitFixedSizeBinary (vector: VectorType): VectorType['TArray'];\n visitDate (vector: VectorType): VectorType['TArray'];\n visitDateDay (vector: VectorType): VectorType['TArray'];\n visitDateMillisecond (vector: VectorType): VectorType['TArray'];\n visitTimestamp (vector: VectorType): VectorType['TArray'];\n visitTimestampSecond (vector: VectorType): VectorType['TArray'];\n visitTimestampMillisecond (vector: VectorType): VectorType['TArray'];\n visitTimestampMicrosecond (vector: VectorType): VectorType['TArray'];\n visitTimestampNanosecond (vector: VectorType): VectorType['TArray'];\n visitTime (vector: VectorType): VectorType['TArray'];\n visitTimeSecond (vector: VectorType): VectorType['TArray'];\n visitTimeMillisecond (vector: VectorType): VectorType['TArray'];\n visitTimeMicrosecond (vector: VectorType): VectorType['TArray'];\n visitTimeNanosecond (vector: VectorType): VectorType['TArray'];\n visitDecimal (vector: VectorType): VectorType['TArray'];\n visitList > (vector: VectorType): VectorType['TArray'];\n visitStruct (vector: VectorType): VectorType['TArray'];\n visitUnion (vector: VectorType): VectorType['TArray'];\n visitDenseUnion (vector: VectorType): VectorType['TArray'];\n visitSparseUnion (vector: VectorType): VectorType['TArray'];\n visitDictionary > (vector: VectorType): VectorType['TArray'];\n visitInterval (vector: VectorType): VectorType['TArray'];\n visitIntervalDayTime (vector: VectorType): VectorType['TArray'];\n visitIntervalYearMonth (vector: VectorType): VectorType['TArray'];\n visitFixedSizeList > (vector: VectorType): VectorType['TArray'];\n visitMap (vector: VectorType): VectorType['TArray'];\n}\n\n/** @ignore */\nexport class ToArrayVisitor extends Visitor {}\n\n/** @ignore */\nfunction arrayOfVector(vector: VectorType): T['TArray'] {\n\n const { type, length, stride } = vector;\n\n // Fast case, return subarray if possible\n switch (type.typeId) {\n case Type.Int:\n case Type.Float: case Type.Decimal:\n case Type.Time: case Type.Timestamp:\n return vector.values.subarray(0, length * stride);\n }\n\n // Otherwise if not primitive, slow copy\n return [...iteratorVisitor.visit(vector)] as T['TArray'];\n}\n\nToArrayVisitor.prototype.visitNull = arrayOfVector;\nToArrayVisitor.prototype.visitBool = arrayOfVector;\nToArrayVisitor.prototype.visitInt = arrayOfVector;\nToArrayVisitor.prototype.visitInt8 = arrayOfVector;\nToArrayVisitor.prototype.visitInt16 = arrayOfVector;\nToArrayVisitor.prototype.visitInt32 = arrayOfVector;\nToArrayVisitor.prototype.visitInt64 = arrayOfVector;\nToArrayVisitor.prototype.visitUint8 = arrayOfVector;\nToArrayVisitor.prototype.visitUint16 = arrayOfVector;\nToArrayVisitor.prototype.visitUint32 = arrayOfVector;\nToArrayVisitor.prototype.visitUint64 = arrayOfVector;\nToArrayVisitor.prototype.visitFloat = arrayOfVector;\nToArrayVisitor.prototype.visitFloat16 = arrayOfVector;\nToArrayVisitor.prototype.visitFloat32 = arrayOfVector;\nToArrayVisitor.prototype.visitFloat64 = arrayOfVector;\nToArrayVisitor.prototype.visitUtf8 = arrayOfVector;\nToArrayVisitor.prototype.visitBinary = arrayOfVector;\nToArrayVisitor.prototype.visitFixedSizeBinary = arrayOfVector;\nToArrayVisitor.prototype.visitDate = arrayOfVector;\nToArrayVisitor.prototype.visitDateDay = arrayOfVector;\nToArrayVisitor.prototype.visitDateMillisecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestamp = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampSecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampMillisecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampMicrosecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampNanosecond = arrayOfVector;\nToArrayVisitor.prototype.visitTime = arrayOfVector;\nToArrayVisitor.prototype.visitTimeSecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimeMillisecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimeMicrosecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimeNanosecond = arrayOfVector;\nToArrayVisitor.prototype.visitDecimal = arrayOfVector;\nToArrayVisitor.prototype.visitList = arrayOfVector;\nToArrayVisitor.prototype.visitStruct = arrayOfVector;\nToArrayVisitor.prototype.visitUnion = arrayOfVector;\nToArrayVisitor.prototype.visitDenseUnion = arrayOfVector;\nToArrayVisitor.prototype.visitSparseUnion = arrayOfVector;\nToArrayVisitor.prototype.visitDictionary = arrayOfVector;\nToArrayVisitor.prototype.visitInterval = arrayOfVector;\nToArrayVisitor.prototype.visitIntervalDayTime = arrayOfVector;\nToArrayVisitor.prototype.visitIntervalYearMonth = arrayOfVector;\nToArrayVisitor.prototype.visitFixedSizeList = arrayOfVector;\nToArrayVisitor.prototype.visitMap = arrayOfVector;\n\n/** @ignore */\nexport const instance = new ToArrayVisitor();\n","/* istanbul ignore file */\n\n// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Visitor } from '../visitor';\nimport { VectorType } from '../interfaces';\nimport { Type, TimeUnit } from '../enum';\nimport { Schema, Field } from '../schema';\nimport {\n DataType, Dictionary,\n Float, Int, Date_, Interval, Time, Timestamp,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary,\n List, FixedSizeList, Map_, Struct, Union,\n} from '../type';\n\n/** @ignore */ const sum = (x: number, y: number) => x + y;\n/** @ignore */ const variableWidthColumnErrorMessage = (type: DataType) => `Cannot compute the byte width of variable-width column ${type}`;\n\n/** @ignore */\nexport interface ByteWidthVisitor extends Visitor {\n visit(node: T): number;\n visitMany(nodes: T[]): number[];\n getVisitFn (node: T): (type: DataType) => number;\n getVisitFn(node: VectorType | Data | T): (type: T) => number;\n}\n\n/** @ignore */\nexport class ByteWidthVisitor extends Visitor {\n public visitNull (____: Null ) { return 0; }\n public visitInt (type: Int ) { return type.bitWidth / 8; }\n public visitFloat (type: Float ) { return type.ArrayType.BYTES_PER_ELEMENT; }\n public visitBinary (type: Binary ) { throw new Error(variableWidthColumnErrorMessage(type)); }\n public visitUtf8 (type: Utf8 ) { throw new Error(variableWidthColumnErrorMessage(type)); }\n public visitBool (____: Bool ) { return 1 / 8; }\n public visitDecimal (____: Decimal ) { return 16; }\n public visitDate (type: Date_ ) { return (type.unit + 1) * 4; }\n public visitTime (type: Time ) { return type.bitWidth / 8; }\n public visitTimestamp (type: Timestamp ) { return type.unit === TimeUnit.SECOND ? 4 : 8; }\n public visitInterval (type: Interval ) { return (type.unit + 1) * 4; }\n public visitList (type: List ) { throw new Error(variableWidthColumnErrorMessage(type)); }\n public visitStruct (type: Struct ) { return this.visitFields(type.children).reduce(sum, 0); }\n public visitUnion (type: Union ) { return this.visitFields(type.children).reduce(sum, 0); }\n public visitFixedSizeBinary (type: FixedSizeBinary ) { return type.byteWidth; }\n public visitFixedSizeList (type: FixedSizeList ) { return type.listSize * this.visitFields(type.children).reduce(sum, 0); }\n public visitMap (type: Map_ ) { return this.visitFields(type.children).reduce(sum, 0); }\n public visitDictionary (type: Dictionary ) { return this.visit(type.indices); }\n public visitFields (fields: Field[] ) { return (fields || []).map((field) => this.visit(field.type)); }\n public visitSchema (schema: Schema ) { return this.visitFields(schema.fields).reduce(sum, 0); }\n}\n\n/** @ignore */\nexport const instance = new ByteWidthVisitor();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { DataType } from '../type';\nimport { Visitor } from '../visitor';\nimport { VectorType, VectorCtor } from '../interfaces';\n\nimport { BinaryVector } from '../vector/binary';\nimport { BoolVector } from '../vector/bool';\nimport { DateVector, DateDayVector, DateMillisecondVector } from '../vector/date';\nimport { DecimalVector } from '../vector/decimal';\nimport { DictionaryVector } from '../vector/dictionary';\nimport { FixedSizeBinaryVector } from '../vector/fixedsizebinary';\nimport { FixedSizeListVector } from '../vector/fixedsizelist';\nimport { FloatVector, Float16Vector, Float32Vector, Float64Vector } from '../vector/float';\nimport { IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector } from '../vector/interval';\nimport { IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector } from '../vector/int';\nimport { ListVector } from '../vector/list';\nimport { MapVector } from '../vector/map';\nimport { NullVector } from '../vector/null';\nimport { StructVector } from '../vector/struct';\nimport { TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector } from '../vector/timestamp';\nimport { TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector } from '../vector/time';\nimport { UnionVector, DenseUnionVector, SparseUnionVector } from '../vector/union';\nimport { Utf8Vector } from '../vector/utf8';\n\n/** @ignore */\nexport interface GetVectorConstructor extends Visitor {\n visit(node: T): VectorCtor;\n visitMany (nodes: T[]): VectorCtor[];\n getVisitFn(node: T): () => VectorCtor;\n getVisitFn(node: VectorType | Data | T): () => VectorCtor;\n}\n\n/** @ignore */\nexport class GetVectorConstructor extends Visitor {\n public visitNull () { return NullVector; }\n public visitBool () { return BoolVector; }\n public visitInt () { return IntVector; }\n public visitInt8 () { return Int8Vector; }\n public visitInt16 () { return Int16Vector; }\n public visitInt32 () { return Int32Vector; }\n public visitInt64 () { return Int64Vector; }\n public visitUint8 () { return Uint8Vector; }\n public visitUint16 () { return Uint16Vector; }\n public visitUint32 () { return Uint32Vector; }\n public visitUint64 () { return Uint64Vector; }\n public visitFloat () { return FloatVector; }\n public visitFloat16 () { return Float16Vector; }\n public visitFloat32 () { return Float32Vector; }\n public visitFloat64 () { return Float64Vector; }\n public visitUtf8 () { return Utf8Vector; }\n public visitBinary () { return BinaryVector; }\n public visitFixedSizeBinary () { return FixedSizeBinaryVector; }\n public visitDate () { return DateVector; }\n public visitDateDay () { return DateDayVector; }\n public visitDateMillisecond () { return DateMillisecondVector; }\n public visitTimestamp () { return TimestampVector; }\n public visitTimestampSecond () { return TimestampSecondVector; }\n public visitTimestampMillisecond () { return TimestampMillisecondVector; }\n public visitTimestampMicrosecond () { return TimestampMicrosecondVector; }\n public visitTimestampNanosecond () { return TimestampNanosecondVector; }\n public visitTime () { return TimeVector; }\n public visitTimeSecond () { return TimeSecondVector; }\n public visitTimeMillisecond () { return TimeMillisecondVector; }\n public visitTimeMicrosecond () { return TimeMicrosecondVector; }\n public visitTimeNanosecond () { return TimeNanosecondVector; }\n public visitDecimal () { return DecimalVector; }\n public visitList () { return ListVector; }\n public visitStruct () { return StructVector; }\n public visitUnion () { return UnionVector; }\n public visitDenseUnion () { return DenseUnionVector; }\n public visitSparseUnion () { return SparseUnionVector; }\n public visitDictionary () { return DictionaryVector; }\n public visitInterval () { return IntervalVector; }\n public visitIntervalDayTime () { return IntervalDayTimeVector; }\n public visitIntervalYearMonth () { return IntervalYearMonthVector; }\n public visitFixedSizeList () { return FixedSizeListVector; }\n public visitMap () { return MapVector; }\n}\n\n/** @ignore */\nexport const instance = new GetVectorConstructor();\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nexport { Vector } from '../vector';\nexport { BaseVector } from './base';\nexport { BinaryVector } from './binary';\nexport { BoolVector } from './bool';\nexport { Chunked } from './chunked';\nexport { DateVector, DateDayVector, DateMillisecondVector } from './date';\nexport { DecimalVector } from './decimal';\nexport { DictionaryVector } from './dictionary';\nexport { FixedSizeBinaryVector } from './fixedsizebinary';\nexport { FixedSizeListVector } from './fixedsizelist';\nexport { FloatVector, Float16Vector, Float32Vector, Float64Vector } from './float';\nexport { IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector } from './interval';\nexport { IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector } from './int';\nexport { ListVector } from './list';\nexport { MapVector } from './map';\nexport { NullVector } from './null';\nexport { StructVector } from './struct';\nexport { TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector } from './timestamp';\nexport { TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector } from './time';\nexport { UnionVector, DenseUnionVector, SparseUnionVector } from './union';\nexport { Utf8Vector } from './utf8';\nexport { MapRow, StructRow } from './row';\n\nimport * as fn from '../util/fn';\nimport { Data } from '../data';\nimport { Type } from '../enum';\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { setBool } from '../util/bit';\nimport { isIterable, isAsyncIterable } from '../util/compat';\nimport { Builder, IterableBuilderOptions } from '../builder';\nimport { VectorType as V, VectorCtorArgs } from '../interfaces';\nimport { instance as getVisitor } from '../visitor/get';\nimport { instance as setVisitor } from '../visitor/set';\nimport { instance as indexOfVisitor } from '../visitor/indexof';\nimport { instance as toArrayVisitor } from '../visitor/toarray';\nimport { instance as iteratorVisitor } from '../visitor/iterator';\nimport { instance as byteWidthVisitor } from '../visitor/bytewidth';\nimport { instance as getVectorConstructor } from '../visitor/vectorctor';\n\ndeclare module '../vector' {\n namespace Vector {\n export { newVector as new };\n export { vectorFrom as from };\n }\n}\n\ndeclare module './base' {\n namespace BaseVector {\n export { vectorFrom as from };\n }\n interface BaseVector {\n get(index: number): T['TValue'] | null;\n set(index: number, value: T['TValue'] | null): void;\n indexOf(value: T['TValue'] | null, fromIndex?: number): number;\n toArray(): T['TArray'];\n getByteWidth(): number;\n [Symbol.iterator](): IterableIterator;\n }\n}\n\n/** @nocollapse */\nVector.new = newVector;\n\n/** @nocollapse */\nVector.from = vectorFrom;\n\n/** @ignore */\nfunction newVector(data: Data, ...args: VectorCtorArgs>): V {\n return new (getVectorConstructor.getVisitFn(data)())(data, ...args) as V;\n}\n\n/** @ignore */\nexport interface VectorBuilderOptions extends IterableBuilderOptions { values: Iterable; }\n/** @ignore */\nexport interface VectorBuilderOptionsAsync extends IterableBuilderOptions { values: AsyncIterable; }\n\n/** @ignore */\nexport function vectorFromValuesWithType(newDataType: () => T, input: Iterable | AsyncIterable | VectorBuilderOptions | VectorBuilderOptionsAsync) {\n if (isIterable(input)) {\n return Vector.from({ 'nullValues': [null, undefined], type: newDataType(), 'values': input }) as V;\n } else if (isAsyncIterable(input)) {\n return Vector.from({ 'nullValues': [null, undefined], type: newDataType(), 'values': input }) as Promise>;\n }\n const {\n 'values': values = [],\n 'type': type = newDataType(),\n 'nullValues': nullValues = [null, undefined],\n } = { ...input };\n return isIterable(values)\n ? Vector.from({ nullValues, ...input, type } as VectorBuilderOptions)\n : Vector.from({ nullValues, ...input, type } as VectorBuilderOptionsAsync);\n}\n\n/** @ignore */\nfunction vectorFrom(input: VectorBuilderOptions): Vector;\nfunction vectorFrom(input: VectorBuilderOptionsAsync): Promise>;\nfunction vectorFrom(input: VectorBuilderOptions | VectorBuilderOptionsAsync) {\n const { 'values': values = [], ...options } = { 'nullValues': [null, undefined], ...input } as VectorBuilderOptions | VectorBuilderOptionsAsync;\n if (isIterable(values)) {\n const chunks = [...Builder.throughIterable(options)(values)];\n return chunks.length === 1 ? chunks[0] : Chunked.concat(chunks);\n }\n return (async (chunks: V[]) => {\n const transform = Builder.throughAsyncIterable(options);\n for await (const chunk of transform(values)) {\n chunks.push(chunk);\n }\n return chunks.length === 1 ? chunks[0] : Chunked.concat(chunks);\n })([]);\n}\n\n//\n// We provide the following method implementations for code navigability purposes only.\n// They're overridden at runtime below with the specific Visitor implementation for each type,\n// short-circuiting the usual Visitor traversal and reducing intermediate lookups and calls.\n// This comment is here to remind you to not set breakpoints in these function bodies, or to inform\n// you why the breakpoints you have already set are not being triggered. Have a great day!\n//\n\nBaseVector.prototype.get = function baseVectorGet(this: BaseVector, index: number): T['TValue'] | null {\n return getVisitor.visit(this, index);\n};\n\nBaseVector.prototype.set = function baseVectorSet(this: BaseVector, index: number, value: T['TValue'] | null): void {\n return setVisitor.visit(this, index, value);\n};\n\nBaseVector.prototype.indexOf = function baseVectorIndexOf(this: BaseVector, value: T['TValue'] | null, fromIndex?: number): number {\n return indexOfVisitor.visit(this, value, fromIndex);\n};\n\nBaseVector.prototype.toArray = function baseVectorToArray(this: BaseVector): T['TArray'] {\n return toArrayVisitor.visit(this);\n};\n\nBaseVector.prototype.getByteWidth = function baseVectorGetByteWidth(this: BaseVector): number {\n return byteWidthVisitor.visit(this.type);\n};\n\nBaseVector.prototype[Symbol.iterator] = function baseVectorSymbolIterator(this: BaseVector): IterableIterator {\n return iteratorVisitor.visit(this);\n};\n\n(BaseVector.prototype as any)._bindDataAccessors = bindBaseVectorDataAccessors;\n\n// Perf: bind and assign the operator Visitor methods to each of the Vector subclasses for each Type\n(Object.keys(Type) as any[])\n .map((T: any) => Type[T] as any)\n .filter((T: any): T is Type => typeof T === 'number')\n .filter((typeId) => typeId !== Type.NONE)\n .forEach((typeId) => {\n const VectorCtor = getVectorConstructor.visit(typeId);\n VectorCtor.prototype['get'] = fn.partial1(getVisitor.getVisitFn(typeId));\n VectorCtor.prototype['set'] = fn.partial2(setVisitor.getVisitFn(typeId));\n VectorCtor.prototype['indexOf'] = fn.partial2(indexOfVisitor.getVisitFn(typeId));\n VectorCtor.prototype['toArray'] = fn.partial0(toArrayVisitor.getVisitFn(typeId));\n VectorCtor.prototype['getByteWidth'] = partialType0(byteWidthVisitor.getVisitFn(typeId));\n VectorCtor.prototype[Symbol.iterator] = fn.partial0(iteratorVisitor.getVisitFn(typeId));\n });\n\n/** @ignore */\nfunction partialType0(visit: (node: T['type']) => any) {\n return function(this: T) { return visit(this.type); };\n}\n\n/** @ignore */\nfunction wrapNullableGet, F extends (i: number) => any>(fn: F): (...args: Parameters) => ReturnType {\n return function(this: V, i: number) { return this.isValid(i) ? fn.call(this, i) : null; };\n}\n\n/** @ignore */\nfunction wrapNullableSet, F extends (i: number, a: any) => void>(fn: F): (...args: Parameters) => void {\n return function(this: V, i: number, a: any) {\n if (setBool(this.nullBitmap, this.offset + i, !(a === null || a === undefined))) {\n fn.call(this, i, a);\n }\n };\n}\n\n/** @ignore */\nfunction bindBaseVectorDataAccessors(this: BaseVector) {\n const nullBitmap = this.nullBitmap;\n if (nullBitmap && nullBitmap.byteLength > 0) {\n this.get = wrapNullableGet(this.get);\n this.set = wrapNullableSet(this.set);\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { Column } from './column';\nimport { Schema, Field } from './schema';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from './recordbatch';\nimport { DataFrame } from './compute/dataframe';\nimport { RecordBatchReader } from './ipc/reader';\nimport { DataType, RowLike, Struct } from './type';\nimport { selectColumnArgs, selectArgs } from './util/args';\nimport { Clonable, Sliceable, Applicative } from './vector';\nimport { isPromise, isIterable, isAsyncIterable } from './util/compat';\nimport { RecordBatchFileWriter, RecordBatchStreamWriter } from './ipc/writer';\nimport { distributeColumnsIntoRecordBatches, distributeVectorsIntoRecordBatches } from './util/recordbatch';\nimport { Vector, Chunked, StructVector, VectorBuilderOptions, VectorBuilderOptionsAsync } from './vector/index';\n\ntype VectorMap = { [key: string]: Vector };\ntype Fields = (keyof T)[] | Field[];\ntype ChildData = Data[] | Vector[];\ntype Columns = Column[] | Column[][];\n\nexport interface Table {\n\n get(index: number): Struct['TValue'];\n [Symbol.iterator](): IterableIterator>;\n\n slice(begin?: number, end?: number): Table;\n concat(...others: Vector>[]): Table;\n clone(chunks?: RecordBatch[], offsets?: Uint32Array): Table;\n\n scan(next: import('./compute/dataframe').NextFunc, bind?: import('./compute/dataframe').BindFunc): void;\n scanReverse(next: import('./compute/dataframe').NextFunc, bind?: import('./compute/dataframe').BindFunc): void;\n countBy(name: import('./compute/predicate').Col | string): import('./compute/dataframe').CountByResult;\n filter(predicate: import('./compute/predicate').Predicate): import('./compute/dataframe').FilteredDataFrame;\n}\n\nexport class Table\n extends Chunked>\n implements DataFrame,\n Clonable>,\n Sliceable>,\n Applicative, Table> {\n\n /** @nocollapse */\n public static empty(schema = new Schema([])) { return new Table(schema, []); }\n\n public static from(): Table<{}>;\n public static from(source: RecordBatchReader): Table;\n public static from(source: import('./ipc/reader').FromArg0): Table;\n public static from(source: import('./ipc/reader').FromArg2): Table;\n public static from(source: import('./ipc/reader').FromArg1): Promise>;\n public static from(source: import('./ipc/reader').FromArg3): Promise>;\n public static from(source: import('./ipc/reader').FromArg4): Promise>;\n public static from(source: import('./ipc/reader').FromArg5): Promise>;\n public static from(source: PromiseLike>): Promise>;\n public static from(options: VectorBuilderOptions, TNull>): Table;\n public static from(options: VectorBuilderOptionsAsync, TNull>): Promise>;\n /** @nocollapse */\n public static from(input?: any) {\n\n if (!input) { return Table.empty(); }\n\n if (typeof input === 'object') {\n let table = isIterable(input['values']) ? tableFromIterable(input)\n : isAsyncIterable(input['values']) ? tableFromAsyncIterable(input)\n : null;\n if (table !== null) { return table; }\n }\n\n let reader = RecordBatchReader.from(input) as RecordBatchReader | Promise>;\n\n if (isPromise>(reader)) {\n return (async () => await Table.from(await reader))();\n }\n if (reader.isSync() && (reader = reader.open())) {\n return !reader.schema ? Table.empty() : new Table(reader.schema, [...reader]);\n }\n return (async (opening) => {\n const reader = await opening;\n const schema = reader.schema;\n const batches: RecordBatch[] = [];\n if (schema) {\n for await (let batch of reader) {\n batches.push(batch);\n }\n return new Table(schema, batches);\n }\n return Table.empty();\n })(reader.open());\n }\n\n /** @nocollapse */\n public static async fromAsync(source: import('./ipc/reader').FromArgs): Promise> {\n return await Table.from(source as any);\n }\n\n /** @nocollapse */\n public static fromStruct(vector: Vector>) {\n return Table.new(vector.data.childData as Data[], vector.type.children);\n }\n\n /**\n * @summary Create a new Table from a collection of Columns or Vectors,\n * with an optional list of names or Fields.\n *\n *\n * `Table.new` accepts an Object of\n * Columns or Vectors, where the keys will be used as the field names\n * for the Schema:\n * ```ts\n * const i32s = Int32Vector.from([1, 2, 3]);\n * const f32s = Float32Vector.from([.1, .2, .3]);\n * const table = Table.new({ i32: i32s, f32: f32s });\n * assert(table.schema.fields[0].name === 'i32');\n * ```\n *\n * It also accepts a a list of Vectors with an optional list of names or\n * Fields for the resulting Schema. If the list is omitted or a name is\n * missing, the numeric index of each Vector will be used as the name:\n * ```ts\n * const i32s = Int32Vector.from([1, 2, 3]);\n * const f32s = Float32Vector.from([.1, .2, .3]);\n * const table = Table.new([i32s, f32s], ['i32']);\n * assert(table.schema.fields[0].name === 'i32');\n * assert(table.schema.fields[1].name === '1');\n * ```\n *\n * If the supplied arguments are Columns, `Table.new` will infer the Schema\n * from the Columns:\n * ```ts\n * const i32s = Column.new('i32', Int32Vector.from([1, 2, 3]));\n * const f32s = Column.new('f32', Float32Vector.from([.1, .2, .3]));\n * const table = Table.new(i32s, f32s);\n * assert(table.schema.fields[0].name === 'i32');\n * assert(table.schema.fields[1].name === 'f32');\n * ```\n *\n * If the supplied Vector or Column lengths are unequal, `Table.new` will\n * extend the lengths of the shorter Columns, allocating additional bytes\n * to represent the additional null slots. The memory required to allocate\n * these additional bitmaps can be computed as:\n * ```ts\n * let additionalBytes = 0;\n * for (let vec in shorter_vectors) {\n * additionalBytes += (((longestLength - vec.length) + 63) & ~63) >> 3;\n * }\n * ```\n *\n * For example, an additional null bitmap for one million null values would require\n * 125,000 bytes (`((1e6 + 63) & ~63) >> 3`), or approx. `0.11MiB`\n */\n public static new(...columns: Columns): Table;\n public static new(children: T): Table<{ [P in keyof T]: T[P]['type'] }>;\n public static new(children: ChildData, fields?: Fields): Table;\n /** @nocollapse */\n public static new(...cols: any[]) {\n return new Table(...distributeColumnsIntoRecordBatches(selectColumnArgs(cols)));\n }\n\n constructor(batches: RecordBatch[]);\n constructor(...batches: RecordBatch[]);\n constructor(schema: Schema, batches: RecordBatch[]);\n constructor(schema: Schema, ...batches: RecordBatch[]);\n constructor(...args: any[]) {\n\n let schema: Schema = null!;\n\n if (args[0] instanceof Schema) { schema = args.shift(); }\n\n let chunks = selectArgs>(RecordBatch, args);\n\n if (!schema && !(schema = chunks[0] && chunks[0].schema)) {\n throw new TypeError('Table must be initialized with a Schema or at least one RecordBatch');\n }\n\n chunks[0] || (chunks[0] = new _InternalEmptyPlaceholderRecordBatch(schema));\n\n super(new Struct(schema.fields), chunks);\n\n this._schema = schema;\n this._chunks = chunks;\n }\n\n protected _schema: Schema;\n // List of inner RecordBatches\n protected _chunks: RecordBatch[];\n protected _children?: Column[];\n\n public get schema() { return this._schema; }\n public get length() { return this._length; }\n public get chunks() { return this._chunks; }\n public get numCols() { return this._numChildren; }\n\n public clone(chunks = this._chunks) {\n return new Table(this._schema, chunks);\n }\n\n public getColumn(name: R): Column {\n return this.getColumnAt(this.getColumnIndex(name)) as Column;\n }\n public getColumnAt(index: number): Column | null {\n return this.getChildAt(index);\n }\n public getColumnIndex(name: R) {\n return this._schema.fields.findIndex((f) => f.name === name);\n }\n public getChildAt(index: number): Column | null {\n if (index < 0 || index >= this.numChildren) { return null; }\n let field: Field, child: Column;\n const fields = (this._schema as Schema).fields;\n const columns = this._children || (this._children = []) as Column[];\n if (child = columns[index]) { return child as Column; }\n if (field = fields[index]) {\n const chunks = this._chunks\n .map((chunk) => chunk.getChildAt(index))\n .filter((vec): vec is Vector => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Column(field, chunks));\n }\n }\n return null;\n }\n\n // @ts-ignore\n public serialize(encoding = 'binary', stream = true) {\n const Writer = !stream\n ? RecordBatchFileWriter\n : RecordBatchStreamWriter;\n return Writer.writeAll(this).toUint8Array(true);\n }\n public count(): number {\n return this._length;\n }\n public select(...columnNames: K[]) {\n const nameToIndex = this._schema.fields.reduce((m, f, i) => m.set(f.name as K, i), new Map());\n return this.selectAt(...columnNames.map((columnName) => nameToIndex.get(columnName)!).filter((x) => x > -1));\n }\n public selectAt(...columnIndices: number[]) {\n const schema = this._schema.selectAt(...columnIndices);\n return new Table(schema, this._chunks.map(({ length, data: { childData } }) => {\n return new RecordBatch(schema, length, columnIndices.map((i) => childData[i]).filter(Boolean));\n }));\n }\n public assign(other: Table) {\n\n const fields = this._schema.fields;\n const [indices, oldToNew] = other.schema.fields.reduce((memo, f2, newIdx) => {\n const [indices, oldToNew] = memo;\n const i = fields.findIndex((f) => f.name === f2.name);\n ~i ? (oldToNew[i] = newIdx) : indices.push(newIdx);\n return memo;\n }, [[], []] as number[][]);\n\n const schema = this._schema.assign(other.schema);\n const columns = [\n ...fields.map((_f, i, _fs, j = oldToNew[i]) =>\n (j === undefined ? this.getColumnAt(i) : other.getColumnAt(j))!),\n ...indices.map((i) => other.getColumnAt(i)!)\n ].filter(Boolean) as Column<(T & R)[keyof T | keyof R]>[];\n\n return new Table(...distributeVectorsIntoRecordBatches(schema, columns));\n }\n}\n\nfunction tableFromIterable(input: VectorBuilderOptions, TNull>) {\n const { type } = input;\n if (type instanceof Struct) {\n return Table.fromStruct(StructVector.from(input as VectorBuilderOptions, TNull>));\n }\n return null;\n}\n\nfunction tableFromAsyncIterable(input: VectorBuilderOptionsAsync, TNull>) {\n const { type } = input;\n if (type instanceof Struct) {\n return StructVector.from(input as VectorBuilderOptionsAsync, TNull>).then((vector) => Table.fromStruct(vector));\n }\n return null;\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data } from './data';\nimport { Table } from './table';\nimport { Vector } from './vector';\nimport { Visitor } from './visitor';\nimport { Schema, Field } from './schema';\nimport { isIterable } from './util/compat';\nimport { Chunked } from './vector/chunked';\nimport { selectFieldArgs } from './util/args';\nimport { DataType, Struct, Dictionary } from './type';\nimport { ensureSameLengthData } from './util/recordbatch';\nimport { Clonable, Sliceable, Applicative } from './vector';\nimport { StructVector, VectorBuilderOptions, VectorBuilderOptionsAsync } from './vector/index';\n\ntype VectorMap = { [key: string]: Vector };\ntype Fields = (keyof T)[] | Field[];\ntype ChildData = (Data | Vector)[];\n\nexport interface RecordBatch {\n concat(...others: Vector>[]): Table;\n slice(begin?: number, end?: number): RecordBatch;\n clone(data: Data>, children?: Vector[]): RecordBatch;\n}\n\nexport class RecordBatch\n extends StructVector\n implements Clonable>,\n Sliceable>,\n Applicative, Table> {\n\n public static from(options: VectorBuilderOptions, TNull>): Table;\n public static from(options: VectorBuilderOptionsAsync, TNull>): Promise>;\n /** @nocollapse */\n public static from(options: VectorBuilderOptions, TNull> | VectorBuilderOptionsAsync, TNull>) {\n if (isIterable<(Struct)['TValue'] | TNull>(options['values'])) {\n return Table.from(options as VectorBuilderOptions, TNull>);\n }\n return Table.from(options as VectorBuilderOptionsAsync, TNull>);\n }\n\n public static new(children: T): RecordBatch<{ [P in keyof T]: T[P]['type'] }>;\n public static new(children: ChildData, fields?: Fields): RecordBatch;\n /** @nocollapse */\n public static new(...args: any[]) {\n const [fs, xs] = selectFieldArgs(args);\n const vs = xs.filter((x): x is Vector => x instanceof Vector);\n return new RecordBatch(...ensureSameLengthData(new Schema(fs), vs.map((x) => x.data)));\n }\n\n protected _schema: Schema;\n protected _dictionaries?: Map;\n\n constructor(schema: Schema, length: number, children: (Data | Vector)[]);\n constructor(schema: Schema, data: Data>, children?: Vector[]);\n constructor(...args: any[]) {\n let data: Data>;\n let schema = args[0] as Schema;\n let children: Vector[] | undefined;\n if (args[1] instanceof Data) {\n [, data, children] = (args as [any, Data>, Vector[]?]);\n } else {\n const fields = schema.fields as Field[];\n const [, length, childData] = args as [any, number, Data[]];\n data = Data.Struct(new Struct(fields), 0, length, 0, null, childData);\n }\n super(data, children);\n this._schema = schema;\n }\n\n public clone(data: Data>, children = this._children) {\n return new RecordBatch(this._schema, data, children);\n }\n\n public concat(...others: Vector>[]): Table {\n const schema = this._schema, chunks = Chunked.flatten(this, ...others);\n return new Table(schema, chunks.map(({ data }) => new RecordBatch(schema, data)));\n }\n\n public get schema() { return this._schema; }\n public get numCols() { return this._schema.fields.length; }\n public get dictionaries() {\n return this._dictionaries || (this._dictionaries = DictionaryCollector.collect(this));\n }\n\n public select(...columnNames: K[]) {\n const nameToIndex = this._schema.fields.reduce((m, f, i) => m.set(f.name as K, i), new Map());\n return this.selectAt(...columnNames.map((columnName) => nameToIndex.get(columnName)!).filter((x) => x > -1));\n }\n public selectAt(...columnIndices: number[]) {\n const schema = this._schema.selectAt(...columnIndices);\n const childData = columnIndices.map((i) => this.data.childData[i]).filter(Boolean);\n return new RecordBatch<{ [key: string]: K }>(schema, this.length, childData);\n }\n}\n\n/**\n * An internal class used by the `RecordBatchReader` and `RecordBatchWriter`\n * implementations to differentiate between a stream with valid zero-length\n * RecordBatches, and a stream with a Schema message, but no RecordBatches.\n * @see https://github.com/apache/arrow/pull/4373\n * @ignore\n * @private\n */\n/* tslint:disable:class-name */\nexport class _InternalEmptyPlaceholderRecordBatch extends RecordBatch {\n constructor(schema: Schema) {\n super(schema, 0, schema.fields.map((f) => Data.new(f.type, 0, 0, 0)));\n }\n}\n\n/** @ignore */\nclass DictionaryCollector extends Visitor {\n public dictionaries = new Map();\n public static collect(batch: T) {\n return new DictionaryCollector().visit(\n batch.data, new Struct(batch.schema.fields)\n ).dictionaries;\n }\n public visit(data: Data, type: DataType) {\n if (DataType.isDictionary(type)) {\n return this.visitDictionary(data, type);\n } else {\n data.childData.forEach((child, i) =>\n this.visit(child, type.children[i].type));\n }\n return this;\n }\n public visitDictionary(data: Data, type: Dictionary) {\n const dictionary = data.dictionary;\n if (dictionary && dictionary.length > 0) {\n this.dictionaries.set(type.id, dictionary);\n }\n return this;\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\nimport { MessageHeader } from '../enum';\nimport { Footer } from './metadata/file';\nimport { Schema, Field } from '../schema';\nimport streamAdapters from '../io/adapters';\nimport { Message } from './metadata/message';\nimport * as metadata from './metadata/message';\nimport { ArrayBufferViewInput } from '../util/buffer';\nimport { ByteStream, AsyncByteStream } from '../io/stream';\nimport { RandomAccessFile, AsyncRandomAccessFile } from '../io/file';\nimport { VectorLoader, JSONVectorLoader } from '../visitor/vectorloader';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from '../recordbatch';\nimport {\n FileHandle,\n ArrowJSONLike,\n ITERATOR_DONE,\n ReadableInterop,\n} from '../io/interfaces';\nimport {\n MessageReader, AsyncMessageReader, JSONMessageReader,\n checkForMagicArrowString, magicLength, magicAndPadding, magicX2AndPadding\n} from './message';\nimport {\n isPromise,\n isIterable, isAsyncIterable,\n isIteratorResult, isArrowJSON,\n isFileHandle, isFetchResponse,\n isReadableDOMStream, isReadableNodeStream\n} from '../util/compat';\n\n/** @ignore */ export type FromArg0 = ArrowJSONLike;\n/** @ignore */ export type FromArg1 = PromiseLike;\n/** @ignore */ export type FromArg2 = Iterable | ArrayBufferViewInput;\n/** @ignore */ export type FromArg3 = PromiseLike | ArrayBufferViewInput>;\n/** @ignore */ export type FromArg4 = Response | NodeJS.ReadableStream | ReadableStream | AsyncIterable;\n/** @ignore */ export type FromArg5 = FileHandle | PromiseLike | PromiseLike;\n/** @ignore */ export type FromArgs = FromArg0 | FromArg1 | FromArg2 | FromArg3 | FromArg4 | FromArg5;\n\n/** @ignore */ type OpenOptions = { autoDestroy?: boolean; };\n/** @ignore */ type RecordBatchReaders = RecordBatchFileReader | RecordBatchStreamReader;\n/** @ignore */ type AsyncRecordBatchReaders = AsyncRecordBatchFileReader | AsyncRecordBatchStreamReader;\n/** @ignore */ type RecordBatchFileReaders = RecordBatchFileReader | AsyncRecordBatchFileReader;\n/** @ignore */ type RecordBatchStreamReaders = RecordBatchStreamReader | AsyncRecordBatchStreamReader;\n\nexport class RecordBatchReader extends ReadableInterop> {\n\n protected _impl: RecordBatchReaderImpls;\n protected constructor(impl: RecordBatchReaderImpls) {\n super();\n this._impl = impl;\n }\n\n public get closed() { return this._impl.closed; }\n public get schema() { return this._impl.schema; }\n public get autoDestroy() { return this._impl.autoDestroy; }\n public get dictionaries() { return this._impl.dictionaries; }\n public get numDictionaries() { return this._impl.numDictionaries; }\n public get numRecordBatches() { return this._impl.numRecordBatches; }\n public get footer() { return this._impl.isFile() ? this._impl.footer : null; }\n\n public isSync(): this is RecordBatchReaders { return this._impl.isSync(); }\n public isAsync(): this is AsyncRecordBatchReaders { return this._impl.isAsync(); }\n public isFile(): this is RecordBatchFileReaders { return this._impl.isFile(); }\n public isStream(): this is RecordBatchStreamReaders { return this._impl.isStream(); }\n\n public next() {\n return this._impl.next();\n }\n public throw(value?: any) {\n return this._impl.throw(value);\n }\n public return(value?: any) {\n return this._impl.return(value);\n }\n public cancel() {\n return this._impl.cancel();\n }\n public reset(schema?: Schema | null): this {\n this._impl.reset(schema);\n this._DOMStream = undefined;\n this._nodeStream = undefined;\n return this;\n }\n public open(options?: OpenOptions) {\n const opening = this._impl.open(options);\n return isPromise(opening) ? opening.then(() => this) : this;\n }\n public readRecordBatch(index: number): RecordBatch | null | Promise | null> {\n return this._impl.isFile() ? this._impl.readRecordBatch(index) : null;\n }\n public [Symbol.iterator](): IterableIterator> {\n return (>> this._impl)[Symbol.iterator]();\n }\n public [Symbol.asyncIterator](): AsyncIterableIterator> {\n return (>> this._impl)[Symbol.asyncIterator]();\n }\n public toDOMStream() {\n return streamAdapters.toDOMStream>(\n (this.isSync()\n ? { [Symbol.iterator]: () => this } as Iterable>\n : { [Symbol.asyncIterator]: () => this } as AsyncIterable>));\n }\n public toNodeStream() {\n return streamAdapters.toNodeStream>(\n (this.isSync()\n ? { [Symbol.iterator]: () => this } as Iterable>\n : { [Symbol.asyncIterator]: () => this } as AsyncIterable>),\n { objectMode: true });\n }\n\n /** @nocollapse */\n // @ts-ignore\n public static throughNode(options?: import('stream').DuplexOptions & { autoDestroy: boolean }): import('stream').Duplex {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n public static throughDOM(\n // @ts-ignore\n writableStrategy?: ByteLengthQueuingStrategy,\n // @ts-ignore\n readableStrategy?: { autoDestroy: boolean }\n ): { writable: WritableStream, readable: ReadableStream> } {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n\n public static from(source: T): T;\n public static from(source: FromArg0): RecordBatchStreamReader;\n public static from(source: FromArg1): Promise>;\n public static from(source: FromArg2): RecordBatchFileReader | RecordBatchStreamReader;\n public static from(source: FromArg3): Promise | RecordBatchStreamReader>;\n public static from(source: FromArg4): Promise | AsyncRecordBatchReaders>;\n public static from(source: FromArg5): Promise | AsyncRecordBatchStreamReader>;\n /** @nocollapse */\n public static from(source: any) {\n if (source instanceof RecordBatchReader) {\n return source;\n } else if (isArrowJSON(source)) {\n return fromArrowJSON(source);\n } else if (isFileHandle(source)) {\n return fromFileHandle(source);\n } else if (isPromise(source)) {\n return (async () => await RecordBatchReader.from(await source))();\n } else if (isFetchResponse(source) || isReadableDOMStream(source) || isReadableNodeStream(source) || isAsyncIterable(source)) {\n return fromAsyncByteStream(new AsyncByteStream(source));\n }\n return fromByteStream(new ByteStream(source));\n }\n\n public static readAll(source: T): T extends RecordBatchReaders ? IterableIterator : AsyncIterableIterator;\n public static readAll(source: FromArg0): IterableIterator>;\n public static readAll(source: FromArg1): AsyncIterableIterator>;\n public static readAll(source: FromArg2): IterableIterator | RecordBatchStreamReader>;\n public static readAll(source: FromArg3): AsyncIterableIterator | RecordBatchStreamReader>;\n public static readAll(source: FromArg4): AsyncIterableIterator | AsyncRecordBatchReaders>;\n public static readAll(source: FromArg5): AsyncIterableIterator | AsyncRecordBatchStreamReader>;\n /** @nocollapse */\n public static readAll(source: any) {\n if (source instanceof RecordBatchReader) {\n return source.isSync() ? readAllSync(source) : readAllAsync(source as AsyncRecordBatchReaders);\n } else if (isArrowJSON(source) || ArrayBuffer.isView(source) || isIterable(source) || isIteratorResult(source)) {\n return readAllSync(source) as IterableIterator>;\n }\n return readAllAsync(source) as AsyncIterableIterator | AsyncRecordBatchReaders>;\n }\n}\n\n//\n// Since TS is a structural type system, we define the following subclass stubs\n// so that concrete types exist to associate with with the interfaces below.\n//\n// The implementation for each RecordBatchReader is hidden away in the set of\n// `RecordBatchReaderImpl` classes in the second half of this file. This allows\n// us to export a single RecordBatchReader class, and swap out the impl based\n// on the io primitives or underlying arrow (JSON, file, or stream) at runtime.\n//\n// Async/await makes our job a bit harder, since it forces everything to be\n// either fully sync or fully async. This is why the logic for the reader impls\n// has been duplicated into both sync and async variants. Since the RBR\n// delegates to its impl, an RBR with an AsyncRecordBatchFileReaderImpl for\n// example will return async/await-friendly Promises, but one with a (sync)\n// RecordBatchStreamReaderImpl will always return values. Nothing should be\n// different about their logic, aside from the async handling. This is also why\n// this code looks highly structured, as it should be nearly identical and easy\n// to follow.\n//\n\n/** @ignore */\nexport class RecordBatchStreamReader extends RecordBatchReader {\n constructor(protected _impl: RecordBatchStreamReaderImpl) { super (_impl); }\n public [Symbol.iterator]() { return (this._impl as IterableIterator>)[Symbol.iterator](); }\n public async *[Symbol.asyncIterator](): AsyncIterableIterator> { yield* this[Symbol.iterator](); }\n}\n/** @ignore */\nexport class AsyncRecordBatchStreamReader extends RecordBatchReader {\n constructor(protected _impl: AsyncRecordBatchStreamReaderImpl) { super (_impl); }\n public [Symbol.iterator](): IterableIterator> { throw new Error(`AsyncRecordBatchStreamReader is not Iterable`); }\n public [Symbol.asyncIterator]() { return (this._impl as AsyncIterableIterator>)[Symbol.asyncIterator](); }\n}\n/** @ignore */\nexport class RecordBatchFileReader extends RecordBatchStreamReader {\n constructor(protected _impl: RecordBatchFileReaderImpl) { super (_impl); }\n}\n/** @ignore */\nexport class AsyncRecordBatchFileReader extends AsyncRecordBatchStreamReader {\n constructor(protected _impl: AsyncRecordBatchFileReaderImpl) { super (_impl); }\n}\n\n//\n// Now override the return types for each sync/async RecordBatchReader variant\n//\n\n/** @ignore */\nexport interface RecordBatchStreamReader extends RecordBatchReader {\n open(options?: OpenOptions | undefined): this;\n cancel(): void;\n throw(value?: any): IteratorResult;\n return(value?: any): IteratorResult;\n next(value?: any): IteratorResult>;\n}\n\n/** @ignore */\nexport interface AsyncRecordBatchStreamReader extends RecordBatchReader {\n open(options?: OpenOptions | undefined): Promise;\n cancel(): Promise;\n throw(value?: any): Promise>;\n return(value?: any): Promise>;\n next(value?: any): Promise>>;\n}\n\n/** @ignore */\nexport interface RecordBatchFileReader extends RecordBatchStreamReader {\n footer: Footer;\n readRecordBatch(index: number): RecordBatch | null;\n}\n\n/** @ignore */\nexport interface AsyncRecordBatchFileReader extends AsyncRecordBatchStreamReader {\n footer: Footer;\n readRecordBatch(index: number): Promise | null>;\n}\n\n/** @ignore */\ntype RecordBatchReaderImpls =\n RecordBatchJSONReaderImpl |\n RecordBatchFileReaderImpl |\n RecordBatchStreamReaderImpl |\n AsyncRecordBatchFileReaderImpl |\n AsyncRecordBatchStreamReaderImpl;\n\n/** @ignore */\ninterface RecordBatchReaderImpl {\n\n closed: boolean;\n schema: Schema;\n autoDestroy: boolean;\n dictionaries: Map;\n\n isFile(): this is RecordBatchFileReaders;\n isStream(): this is RecordBatchStreamReaders;\n isSync(): this is RecordBatchReaders;\n isAsync(): this is AsyncRecordBatchReaders;\n\n reset(schema?: Schema | null): this;\n}\n\n/** @ignore */\ninterface RecordBatchStreamReaderImpl extends RecordBatchReaderImpl {\n\n open(options?: OpenOptions): this;\n cancel(): void;\n\n throw(value?: any): IteratorResult;\n return(value?: any): IteratorResult;\n next(value?: any): IteratorResult>;\n\n [Symbol.iterator](): IterableIterator>;\n}\n\n/** @ignore */\ninterface AsyncRecordBatchStreamReaderImpl extends RecordBatchReaderImpl {\n\n open(options?: OpenOptions): Promise;\n cancel(): Promise;\n\n throw(value?: any): Promise>;\n return(value?: any): Promise>;\n next(value?: any): Promise>>;\n\n [Symbol.asyncIterator](): AsyncIterableIterator>;\n}\n\n/** @ignore */\ninterface RecordBatchFileReaderImpl extends RecordBatchStreamReaderImpl {\n readRecordBatch(index: number): RecordBatch | null;\n}\n\n/** @ignore */\ninterface AsyncRecordBatchFileReaderImpl extends AsyncRecordBatchStreamReaderImpl {\n readRecordBatch(index: number): Promise | null>;\n}\n\n/** @ignore */\nabstract class RecordBatchReaderImpl implements RecordBatchReaderImpl {\n\n // @ts-ignore\n public schema: Schema;\n public closed = false;\n public autoDestroy = true;\n public dictionaries: Map;\n\n protected _dictionaryIndex = 0;\n protected _recordBatchIndex = 0;\n public get numDictionaries() { return this._dictionaryIndex; }\n public get numRecordBatches() { return this._recordBatchIndex; }\n\n constructor(dictionaries = new Map()) {\n this.dictionaries = dictionaries;\n }\n\n public isSync(): this is RecordBatchReaders { return false; }\n public isAsync(): this is AsyncRecordBatchReaders { return false; }\n public isFile(): this is RecordBatchFileReaders { return false; }\n public isStream(): this is RecordBatchStreamReaders { return false; }\n\n public reset(schema?: Schema | null) {\n this._dictionaryIndex = 0;\n this._recordBatchIndex = 0;\n this.schema = schema;\n this.dictionaries = new Map();\n return this;\n }\n\n protected _loadRecordBatch(header: metadata.RecordBatch, body: any) {\n return new RecordBatch(this.schema, header.length, this._loadVectors(header, body, this.schema.fields));\n }\n protected _loadDictionaryBatch(header: metadata.DictionaryBatch, body: any) {\n const { id, isDelta, data } = header;\n const { dictionaries, schema } = this;\n const dictionary = dictionaries.get(id);\n if (isDelta || !dictionary) {\n const type = schema.dictionaries.get(id)!;\n return (dictionary && isDelta ? dictionary.concat(\n Vector.new(this._loadVectors(data, body, [type])[0])) :\n Vector.new(this._loadVectors(data, body, [type])[0])) as Vector;\n }\n return dictionary;\n }\n protected _loadVectors(header: metadata.RecordBatch, body: any, types: (Field | DataType)[]) {\n return new VectorLoader(body, header.nodes, header.buffers, this.dictionaries).visitMany(types);\n }\n}\n\n/** @ignore */\nclass RecordBatchStreamReaderImpl extends RecordBatchReaderImpl implements IterableIterator> {\n\n protected _reader: MessageReader;\n protected _handle: ByteStream | ArrowJSONLike;\n\n constructor(source: ByteStream | ArrowJSONLike, dictionaries?: Map) {\n super(dictionaries);\n this._reader = !isArrowJSON(source)\n ? new MessageReader(this._handle = source)\n : new JSONMessageReader(this._handle = source);\n }\n\n public isSync(): this is RecordBatchReaders { return true; }\n public isStream(): this is RecordBatchStreamReaders { return true; }\n public [Symbol.iterator](): IterableIterator> {\n return this as IterableIterator>;\n }\n public cancel() {\n if (!this.closed && (this.closed = true)) {\n this.reset()._reader.return();\n this._reader = null;\n this.dictionaries = null;\n }\n }\n public open(options?: OpenOptions) {\n if (!this.closed) {\n this.autoDestroy = shouldAutoDestroy(this, options);\n if (!(this.schema || (this.schema = this._reader.readSchema()!))) {\n this.cancel();\n }\n }\n return this;\n }\n public throw(value?: any): IteratorResult {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return this.reset()._reader.throw(value);\n }\n return ITERATOR_DONE;\n }\n public return(value?: any): IteratorResult {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return this.reset()._reader.return(value);\n }\n return ITERATOR_DONE;\n }\n public next(): IteratorResult> {\n if (this.closed) { return ITERATOR_DONE; }\n let message: Message | null, { _reader: reader } = this;\n while (message = this._readNextMessageAndValidate()) {\n if (message.isSchema()) {\n this.reset(message.header());\n } else if (message.isRecordBatch()) {\n this._recordBatchIndex++;\n const header = message.header();\n const buffer = reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return { done: false, value: recordBatch };\n } else if (message.isDictionaryBatch()) {\n this._dictionaryIndex++;\n const header = message.header();\n const buffer = reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n if (this.schema && this._recordBatchIndex === 0) {\n this._recordBatchIndex++;\n return { done: false, value: new _InternalEmptyPlaceholderRecordBatch(this.schema) };\n }\n return this.return();\n }\n protected _readNextMessageAndValidate(type?: T | null) {\n return this._reader.readMessage(type);\n }\n}\n\n/** @ignore */\nclass AsyncRecordBatchStreamReaderImpl extends RecordBatchReaderImpl implements AsyncIterableIterator> {\n\n protected _handle: AsyncByteStream;\n protected _reader: AsyncMessageReader;\n\n constructor(source: AsyncByteStream, dictionaries?: Map) {\n super(dictionaries);\n this._reader = new AsyncMessageReader(this._handle = source);\n }\n public isAsync(): this is AsyncRecordBatchReaders { return true; }\n public isStream(): this is RecordBatchStreamReaders { return true; }\n public [Symbol.asyncIterator](): AsyncIterableIterator> {\n return this as AsyncIterableIterator>;\n }\n public async cancel() {\n if (!this.closed && (this.closed = true)) {\n await this.reset()._reader.return();\n this._reader = null;\n this.dictionaries = null;\n }\n }\n public async open(options?: OpenOptions) {\n if (!this.closed) {\n this.autoDestroy = shouldAutoDestroy(this, options);\n if (!(this.schema || (this.schema = (await this._reader.readSchema())!))) {\n await this.cancel();\n }\n }\n return this;\n }\n public async throw(value?: any): Promise> {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return await this.reset()._reader.throw(value);\n }\n return ITERATOR_DONE;\n }\n public async return(value?: any): Promise> {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return await this.reset()._reader.return(value);\n }\n return ITERATOR_DONE;\n }\n public async next() {\n if (this.closed) { return ITERATOR_DONE; }\n let message: Message | null, { _reader: reader } = this;\n while (message = await this._readNextMessageAndValidate()) {\n if (message.isSchema()) {\n await this.reset(message.header());\n } else if (message.isRecordBatch()) {\n this._recordBatchIndex++;\n const header = message.header();\n const buffer = await reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return { done: false, value: recordBatch };\n } else if (message.isDictionaryBatch()) {\n this._dictionaryIndex++;\n const header = message.header();\n const buffer = await reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n if (this.schema && this._recordBatchIndex === 0) {\n this._recordBatchIndex++;\n return { done: false, value: new _InternalEmptyPlaceholderRecordBatch(this.schema) };\n }\n return await this.return();\n }\n protected async _readNextMessageAndValidate(type?: T | null) {\n return await this._reader.readMessage(type);\n }\n}\n\n/** @ignore */\nclass RecordBatchFileReaderImpl extends RecordBatchStreamReaderImpl {\n\n // @ts-ignore\n protected _footer?: Footer;\n // @ts-ignore\n protected _handle: RandomAccessFile;\n public get footer() { return this._footer!; }\n public get numDictionaries() { return this._footer ? this._footer.numDictionaries : 0; }\n public get numRecordBatches() { return this._footer ? this._footer.numRecordBatches : 0; }\n\n constructor(source: RandomAccessFile | ArrayBufferViewInput, dictionaries?: Map) {\n super(source instanceof RandomAccessFile ? source : new RandomAccessFile(source), dictionaries);\n }\n public isSync(): this is RecordBatchReaders { return true; }\n public isFile(): this is RecordBatchFileReaders { return true; }\n public open(options?: OpenOptions) {\n if (!this.closed && !this._footer) {\n this.schema = (this._footer = this._readFooter()).schema;\n for (const block of this._footer.dictionaryBatches()) {\n block && this._readDictionaryBatch(this._dictionaryIndex++);\n }\n }\n return super.open(options);\n }\n public readRecordBatch(index: number) {\n if (this.closed) { return null; }\n if (!this._footer) { this.open(); }\n const block = this._footer && this._footer.getRecordBatch(index);\n if (block && this._handle.seek(block.offset)) {\n const message = this._reader.readMessage(MessageHeader.RecordBatch);\n if (message && message.isRecordBatch()) {\n const header = message.header();\n const buffer = this._reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return recordBatch;\n }\n }\n return null;\n }\n protected _readDictionaryBatch(index: number) {\n const block = this._footer && this._footer.getDictionaryBatch(index);\n if (block && this._handle.seek(block.offset)) {\n const message = this._reader.readMessage(MessageHeader.DictionaryBatch);\n if (message && message.isDictionaryBatch()) {\n const header = message.header();\n const buffer = this._reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n }\n protected _readFooter() {\n const { _handle } = this;\n const offset = _handle.size - magicAndPadding;\n const length = _handle.readInt32(offset);\n const buffer = _handle.readAt(offset - length, length);\n return Footer.decode(buffer);\n }\n protected _readNextMessageAndValidate(type?: T | null): Message | null {\n if (!this._footer) { this.open(); }\n if (this._footer && this._recordBatchIndex < this.numRecordBatches) {\n const block = this._footer && this._footer.getRecordBatch(this._recordBatchIndex);\n if (block && this._handle.seek(block.offset)) {\n return this._reader.readMessage(type);\n }\n }\n return null;\n }\n}\n\n/** @ignore */\nclass AsyncRecordBatchFileReaderImpl extends AsyncRecordBatchStreamReaderImpl\n implements AsyncRecordBatchFileReaderImpl {\n\n protected _footer?: Footer;\n // @ts-ignore\n protected _handle: AsyncRandomAccessFile;\n public get footer() { return this._footer!; }\n public get numDictionaries() { return this._footer ? this._footer.numDictionaries : 0; }\n public get numRecordBatches() { return this._footer ? this._footer.numRecordBatches : 0; }\n\n constructor(source: FileHandle, byteLength?: number, dictionaries?: Map);\n constructor(source: FileHandle | AsyncRandomAccessFile, dictionaries?: Map);\n constructor(source: FileHandle | AsyncRandomAccessFile, ...rest: any[]) {\n const byteLength = typeof rest[0] !== 'number' ? rest.shift() : undefined;\n const dictionaries = rest[0] instanceof Map ? > rest.shift() : undefined;\n super(source instanceof AsyncRandomAccessFile ? source : new AsyncRandomAccessFile(source, byteLength), dictionaries);\n }\n public isFile(): this is RecordBatchFileReaders { return true; }\n public isAsync(): this is AsyncRecordBatchReaders { return true; }\n public async open(options?: OpenOptions) {\n if (!this.closed && !this._footer) {\n this.schema = (this._footer = await this._readFooter()).schema;\n for (const block of this._footer.dictionaryBatches()) {\n block && await this._readDictionaryBatch(this._dictionaryIndex++);\n }\n }\n return await super.open(options);\n }\n public async readRecordBatch(index: number) {\n if (this.closed) { return null; }\n if (!this._footer) { await this.open(); }\n const block = this._footer && this._footer.getRecordBatch(index);\n if (block && (await this._handle.seek(block.offset))) {\n const message = await this._reader.readMessage(MessageHeader.RecordBatch);\n if (message && message.isRecordBatch()) {\n const header = message.header();\n const buffer = await this._reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return recordBatch;\n }\n }\n return null;\n }\n protected async _readDictionaryBatch(index: number) {\n const block = this._footer && this._footer.getDictionaryBatch(index);\n if (block && (await this._handle.seek(block.offset))) {\n const message = await this._reader.readMessage(MessageHeader.DictionaryBatch);\n if (message && message.isDictionaryBatch()) {\n const header = message.header();\n const buffer = await this._reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n }\n protected async _readFooter() {\n const { _handle } = this;\n _handle._pending && await _handle._pending;\n const offset = _handle.size - magicAndPadding;\n const length = await _handle.readInt32(offset);\n const buffer = await _handle.readAt(offset - length, length);\n return Footer.decode(buffer);\n }\n protected async _readNextMessageAndValidate(type?: T | null): Promise | null> {\n if (!this._footer) { await this.open(); }\n if (this._footer && this._recordBatchIndex < this.numRecordBatches) {\n const block = this._footer.getRecordBatch(this._recordBatchIndex);\n if (block && await this._handle.seek(block.offset)) {\n return await this._reader.readMessage(type);\n }\n }\n return null;\n }\n}\n\n/** @ignore */\nclass RecordBatchJSONReaderImpl extends RecordBatchStreamReaderImpl {\n constructor(source: ArrowJSONLike, dictionaries?: Map) {\n super(source, dictionaries);\n }\n protected _loadVectors(header: metadata.RecordBatch, body: any, types: (Field | DataType)[]) {\n return new JSONVectorLoader(body, header.nodes, header.buffers, this.dictionaries).visitMany(types);\n }\n}\n\n//\n// Define some helper functions and static implementations down here. There's\n// a bit of branching in the static methods that can lead to the same routines\n// being executed, so we've broken those out here for readability.\n//\n\n/** @ignore */\nfunction shouldAutoDestroy(self: { autoDestroy: boolean }, options?: OpenOptions) {\n return options && (typeof options['autoDestroy'] === 'boolean') ? options['autoDestroy'] : self['autoDestroy'];\n}\n\n/** @ignore */\nfunction* readAllSync(source: RecordBatchReaders | FromArg0 | FromArg2) {\n const reader = RecordBatchReader.from( source) as RecordBatchReaders;\n try {\n if (!reader.open({ autoDestroy: false }).closed) {\n do { yield reader; } while (!(reader.reset().open()).closed);\n }\n } finally { reader.cancel(); }\n}\n\n/** @ignore */\nasync function* readAllAsync(source: AsyncRecordBatchReaders | FromArg1 | FromArg3 | FromArg4 | FromArg5) {\n const reader = await RecordBatchReader.from( source) as RecordBatchReader;\n try {\n if (!(await reader.open({ autoDestroy: false })).closed) {\n do { yield reader; } while (!(await reader.reset().open()).closed);\n }\n } finally { await reader.cancel(); }\n}\n\n/** @ignore */\nfunction fromArrowJSON(source: ArrowJSONLike) {\n return new RecordBatchStreamReader(new RecordBatchJSONReaderImpl(source));\n}\n\n/** @ignore */\nfunction fromByteStream(source: ByteStream) {\n const bytes = source.peek((magicLength + 7) & ~7);\n return bytes && bytes.byteLength >= 4 ? !checkForMagicArrowString(bytes)\n ? new RecordBatchStreamReader(new RecordBatchStreamReaderImpl(source))\n : new RecordBatchFileReader(new RecordBatchFileReaderImpl(source.read()))\n : new RecordBatchStreamReader(new RecordBatchStreamReaderImpl(function*(): any {}()));\n}\n\n/** @ignore */\nasync function fromAsyncByteStream(source: AsyncByteStream) {\n const bytes = await source.peek((magicLength + 7) & ~7);\n return bytes && bytes.byteLength >= 4 ? !checkForMagicArrowString(bytes)\n ? new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(source))\n : new RecordBatchFileReader(new RecordBatchFileReaderImpl(await source.read()))\n : new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(async function*(): any {}()));\n}\n\n/** @ignore */\nasync function fromFileHandle(source: FileHandle) {\n const { size } = await source.stat();\n const file = new AsyncRandomAccessFile(source, size);\n if (size >= magicX2AndPadding) {\n if (checkForMagicArrowString(await file.readAt(0, (magicLength + 7) & ~7))) {\n return new AsyncRecordBatchFileReader(new AsyncRecordBatchFileReaderImpl(file));\n }\n }\n return new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(file));\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { DataType } from '../../type';\nimport { Vector } from '../../vector';\nimport { VectorType as V } from '../../interfaces';\nimport { Builder, BuilderOptions } from '../../builder/index';\n\n/** @ignore */\nexport interface BuilderTransformOptions extends BuilderOptions {\n queueingStrategy?: 'bytes' | 'count';\n dictionaryHashFunction?: (value: any) => string | number;\n readableStrategy?: { highWaterMark?: number, size?: any, type?: 'bytes'; };\n writableStrategy?: { highWaterMark?: number, size?: any, type?: 'bytes'; };\n valueToChildTypeId?: (builder: Builder, value: any, offset: number) => number;\n}\n\n/** @ignore */\nexport function builderThroughDOMStream(options: BuilderTransformOptions) {\n return new BuilderTransform(options);\n}\n\n/** @ignore */\nexport class BuilderTransform {\n\n public readable: ReadableStream>;\n public writable: WritableStream;\n public _controller: ReadableStreamDefaultController> | null;\n\n private _numChunks = 0;\n private _finished = false;\n private _bufferedSize = 0;\n private _builder: Builder;\n private _getSize: (builder: Builder) => number;\n\n constructor(options: BuilderTransformOptions) {\n\n // Access properties by string indexers to defeat closure compiler\n\n const {\n ['readableStrategy']: readableStrategy,\n ['writableStrategy']: writableStrategy,\n ['queueingStrategy']: queueingStrategy = 'count',\n ...builderOptions\n } = options;\n\n this._controller = null;\n this._builder = Builder.new(builderOptions);\n this._getSize = queueingStrategy !== 'bytes' ? chunkLength : chunkByteLength;\n\n const { ['highWaterMark']: readableHighWaterMark = queueingStrategy === 'bytes' ? 2 ** 14 : 1000 } = { ...readableStrategy };\n const { ['highWaterMark']: writableHighWaterMark = queueingStrategy === 'bytes' ? 2 ** 14 : 1000 } = { ...writableStrategy };\n\n this['readable'] = new ReadableStream>({\n ['cancel']: () => { this._builder.clear(); },\n ['pull']: (c) => { this._maybeFlush(this._builder, this._controller = c); },\n ['start']: (c) => { this._maybeFlush(this._builder, this._controller = c); },\n }, {\n 'highWaterMark': readableHighWaterMark,\n 'size': queueingStrategy !== 'bytes' ? chunkLength : chunkByteLength,\n });\n\n this['writable'] = new WritableStream({\n ['abort']: () => { this._builder.clear(); },\n ['write']: () => { this._maybeFlush(this._builder, this._controller); },\n ['close']: () => { this._maybeFlush(this._builder.finish(), this._controller); },\n }, {\n 'highWaterMark': writableHighWaterMark,\n 'size': (value: T['TValue'] | TNull) => this._writeValueAndReturnChunkSize(value),\n });\n }\n\n private _writeValueAndReturnChunkSize(value: T['TValue'] | TNull) {\n const bufferedSize = this._bufferedSize;\n this._bufferedSize = this._getSize(this._builder.append(value));\n return this._bufferedSize - bufferedSize;\n }\n\n private _maybeFlush(builder: Builder, controller: ReadableStreamDefaultController> | null) {\n if (controller === null) { return; }\n if (this._bufferedSize >= controller.desiredSize!) {\n ++this._numChunks && this._enqueue(controller, builder.toVector());\n }\n if (builder.finished) {\n if (builder.length > 0 || this._numChunks === 0) {\n ++this._numChunks && this._enqueue(controller, builder.toVector());\n }\n if (!this._finished && (this._finished = true)) {\n this._enqueue(controller, null);\n }\n }\n }\n\n private _enqueue(controller: ReadableStreamDefaultController>, chunk: V | null) {\n this._bufferedSize = 0;\n this._controller = null;\n chunk === null ? controller.close() : controller.enqueue(chunk);\n }\n}\n\n/** @ignore */ const chunkLength = (chunk: Vector | Builder) => chunk.length;\n/** @ignore */ const chunkByteLength = (chunk: Vector | Builder) => chunk.byteLength;\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from '../vector';\nimport { RecordBatch } from '../recordbatch';\nimport { DictionaryVector } from '../vector/dictionary';\n\n/** @ignore */\nexport type ValueFunc = (idx: number, cols: RecordBatch) => T | null;\n/** @ignore */\nexport type PredicateFunc = (idx: number, cols: RecordBatch) => boolean;\n\n/** @ignore */\nexport abstract class Value {\n eq(other: Value | T): Predicate {\n if (!(other instanceof Value)) { other = new Literal(other); }\n return new Equals(this, other);\n }\n le(other: Value | T): Predicate {\n if (!(other instanceof Value)) { other = new Literal(other); }\n return new LTeq(this, other);\n }\n ge(other: Value | T): Predicate {\n if (!(other instanceof Value)) { other = new Literal(other); }\n return new GTeq(this, other);\n }\n lt(other: Value | T): Predicate {\n return new Not(this.ge(other));\n }\n gt(other: Value | T): Predicate {\n return new Not(this.le(other));\n }\n ne(other: Value | T): Predicate {\n return new Not(this.eq(other));\n }\n}\n\n/** @ignore */\nexport class Literal extends Value {\n constructor(public v: T) { super(); }\n}\n\n/** @ignore */\nexport class Col extends Value {\n // @ts-ignore\n public vector: Vector;\n // @ts-ignore\n public colidx: number;\n\n constructor(public name: string) { super(); }\n bind(batch: RecordBatch): (idx: number, batch?: RecordBatch) => any {\n if (!this.colidx) {\n // Assume column index doesn't change between calls to bind\n //this.colidx = cols.findIndex(v => v.name.indexOf(this.name) != -1);\n this.colidx = -1;\n const fields = batch.schema.fields;\n for (let idx = -1; ++idx < fields.length;) {\n if (fields[idx].name === this.name) {\n this.colidx = idx;\n break;\n }\n }\n if (this.colidx < 0) { throw new Error(`Failed to bind Col \"${this.name}\"`); }\n }\n\n const vec = this.vector = batch.getChildAt(this.colidx)!;\n return (idx: number) => vec.get(idx);\n }\n}\n\n/** @ignore */\nexport abstract class Predicate {\n abstract bind(batch: RecordBatch): PredicateFunc;\n and(...expr: Predicate[]): And { return new And(this, ...expr); }\n or(...expr: Predicate[]): Or { return new Or(this, ...expr); }\n not(): Predicate { return new Not(this); }\n}\n\n/** @ignore */\nexport abstract class ComparisonPredicate extends Predicate {\n constructor(public readonly left: Value, public readonly right: Value) {\n super();\n }\n\n bind(batch: RecordBatch) {\n if (this.left instanceof Literal) {\n if (this.right instanceof Literal) {\n return this._bindLitLit(batch, this.left, this.right);\n } else { // right is a Col\n\n return this._bindLitCol(batch, this.left, this.right as Col);\n }\n } else { // left is a Col\n if (this.right instanceof Literal) {\n return this._bindColLit(batch, this.left as Col, this.right);\n } else { // right is a Col\n return this._bindColCol(batch, this.left as Col, this.right as Col);\n }\n }\n }\n\n protected abstract _bindLitLit(batch: RecordBatch, left: Literal, right: Literal): PredicateFunc;\n protected abstract _bindColCol(batch: RecordBatch, left: Col, right: Col): PredicateFunc;\n protected abstract _bindColLit(batch: RecordBatch, col: Col, lit: Literal): PredicateFunc;\n protected abstract _bindLitCol(batch: RecordBatch, lit: Literal, col: Col): PredicateFunc;\n}\n\n/** @ignore */\nexport abstract class CombinationPredicate extends Predicate {\n readonly children: Predicate[];\n constructor(...children: Predicate[]) {\n super();\n this.children = children;\n }\n}\n// add children to protoype so it doesn't get mangled in es2015/umd\n( CombinationPredicate.prototype).children = Object.freeze([]); // freeze for safety\n\n/** @ignore */\nexport class And extends CombinationPredicate {\n constructor(...children: Predicate[]) {\n // Flatten any Ands\n children = children.reduce((accum: Predicate[], p: Predicate): Predicate[] => {\n return accum.concat(p instanceof And ? p.children : p);\n }, []);\n super(...children);\n }\n bind(batch: RecordBatch) {\n const bound = this.children.map((p) => p.bind(batch));\n return (idx: number, batch: RecordBatch) => bound.every((p) => p(idx, batch));\n }\n}\n\n/** @ignore */\nexport class Or extends CombinationPredicate {\n constructor(...children: Predicate[]) {\n // Flatten any Ors\n children = children.reduce((accum: Predicate[], p: Predicate): Predicate[] => {\n return accum.concat(p instanceof Or ? p.children : p);\n }, []);\n super(...children);\n }\n bind(batch: RecordBatch) {\n const bound = this.children.map((p) => p.bind(batch));\n return (idx: number, batch: RecordBatch) => bound.some((p) => p(idx, batch));\n }\n}\n\n/** @ignore */\nexport class Equals extends ComparisonPredicate {\n // Helpers used to cache dictionary reverse lookups between calls to bind\n private lastDictionary: Vector|undefined;\n private lastKey: number|undefined;\n\n protected _bindLitLit(_batch: RecordBatch, left: Literal, right: Literal): PredicateFunc {\n const rtrn: boolean = left.v == right.v;\n return () => rtrn;\n }\n\n protected _bindColCol(batch: RecordBatch, left: Col, right: Col): PredicateFunc {\n const left_func = left.bind(batch);\n const right_func = right.bind(batch);\n return (idx: number, batch: RecordBatch) => left_func(idx, batch) == right_func(idx, batch);\n }\n\n protected _bindColLit(batch: RecordBatch, col: Col, lit: Literal): PredicateFunc {\n const col_func = col.bind(batch);\n if (col.vector instanceof DictionaryVector) {\n let key: any;\n const vector = col.vector as DictionaryVector;\n if (vector.dictionary !== this.lastDictionary) {\n key = vector.reverseLookup(lit.v);\n this.lastDictionary = vector.dictionary;\n this.lastKey = key;\n } else {\n key = this.lastKey;\n }\n\n if (key === -1) {\n // the value doesn't exist in the dictionary - always return\n // false\n // TODO: special-case of PredicateFunc that encapsulates this\n // \"always false\" behavior. That way filtering operations don't\n // have to bother checking\n return () => false;\n } else {\n return (idx: number) => {\n return vector.getKey(idx) === key;\n };\n }\n } else {\n return (idx: number, cols: RecordBatch) => col_func(idx, cols) == lit.v;\n }\n }\n\n protected _bindLitCol(batch: RecordBatch, lit: Literal, col: Col) {\n // Equals is comutative\n return this._bindColLit(batch, col, lit);\n }\n}\n\n/** @ignore */\nexport class LTeq extends ComparisonPredicate {\n protected _bindLitLit(_batch: RecordBatch, left: Literal, right: Literal): PredicateFunc {\n const rtrn: boolean = left.v <= right.v;\n return () => rtrn;\n }\n\n protected _bindColCol(batch: RecordBatch, left: Col, right: Col): PredicateFunc {\n const left_func = left.bind(batch);\n const right_func = right.bind(batch);\n return (idx: number, cols: RecordBatch) => left_func(idx, cols) <= right_func(idx, cols);\n }\n\n protected _bindColLit(batch: RecordBatch, col: Col, lit: Literal): PredicateFunc {\n const col_func = col.bind(batch);\n return (idx: number, cols: RecordBatch) => col_func(idx, cols) <= lit.v;\n }\n\n protected _bindLitCol(batch: RecordBatch, lit: Literal, col: Col) {\n const col_func = col.bind(batch);\n return (idx: number, cols: RecordBatch) => lit.v <= col_func(idx, cols);\n }\n}\n\n/** @ignore */\nexport class GTeq extends ComparisonPredicate {\n protected _bindLitLit(_batch: RecordBatch, left: Literal, right: Literal): PredicateFunc {\n const rtrn: boolean = left.v >= right.v;\n return () => rtrn;\n }\n\n protected _bindColCol(batch: RecordBatch, left: Col, right: Col): PredicateFunc {\n const left_func = left.bind(batch);\n const right_func = right.bind(batch);\n return (idx: number, cols: RecordBatch) => left_func(idx, cols) >= right_func(idx, cols);\n }\n\n protected _bindColLit(batch: RecordBatch, col: Col, lit: Literal): PredicateFunc {\n const col_func = col.bind(batch);\n return (idx: number, cols: RecordBatch) => col_func(idx, cols) >= lit.v;\n }\n\n protected _bindLitCol(batch: RecordBatch, lit: Literal, col: Col) {\n const col_func = col.bind(batch);\n return (idx: number, cols: RecordBatch) => lit.v >= col_func(idx, cols);\n }\n}\n\n/** @ignore */\nexport class Not extends Predicate {\n constructor(public readonly child: Predicate) {\n super();\n }\n\n bind(batch: RecordBatch) {\n const func = this.child.bind(batch);\n return (idx: number, batch: RecordBatch) => !func(idx, batch);\n }\n}\n\n/** @ignore */\nexport class CustomPredicate extends Predicate {\n constructor(private next: PredicateFunc, private bind_: (batch: RecordBatch) => void) {\n super();\n }\n\n bind(batch: RecordBatch) {\n this.bind_(batch);\n return this.next;\n }\n}\n\nexport function lit(v: any): Value { return new Literal(v); }\nexport function col(n: string): Col { return new Col(n); }\nexport function and(...p: Predicate[]): And { return new And(...p); }\nexport function or(...p: Predicate[]): Or { return new Or(...p); }\nexport function custom(next: PredicateFunc, bind: (batch: RecordBatch) => void) {\n return new CustomPredicate(next, bind);\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Table } from '../table';\nimport { Vector } from '../vector';\nimport { IntVector } from '../vector/int';\nimport { Field, Schema } from '../schema';\nimport { Predicate, Col } from './predicate';\nimport { RecordBatch } from '../recordbatch';\nimport { VectorType as V } from '../interfaces';\nimport { DataType, Int, Struct, Dictionary } from '../type';\n\n/** @ignore */\nexport type BindFunc = (batch: RecordBatch) => void;\n/** @ignore */\nexport type NextFunc = (idx: number, batch: RecordBatch) => void;\n\nTable.prototype.countBy = function(this: Table, name: Col | string) { return new DataFrame(this.chunks).countBy(name); };\nTable.prototype.scan = function(this: Table, next: NextFunc, bind?: BindFunc) { return new DataFrame(this.chunks).scan(next, bind); };\nTable.prototype.scanReverse = function(this: Table, next: NextFunc, bind?: BindFunc) { return new DataFrame(this.chunks).scanReverse(next, bind); };\nTable.prototype.filter = function(this: Table, predicate: Predicate): FilteredDataFrame { return new DataFrame(this.chunks).filter(predicate); };\n\nexport class DataFrame extends Table {\n public filter(predicate: Predicate): FilteredDataFrame {\n return new FilteredDataFrame(this.chunks, predicate);\n }\n public scan(next: NextFunc, bind?: BindFunc) {\n const batches = this.chunks, numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n if (bind) { bind(batch); }\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n next(index, batch);\n }\n }\n }\n public scanReverse(next: NextFunc, bind?: BindFunc) {\n const batches = this.chunks, numBatches = batches.length;\n for (let batchIndex = numBatches; --batchIndex >= 0;) {\n // load batches\n const batch = batches[batchIndex];\n if (bind) { bind(batch); }\n // yield all indices\n for (let index = batch.length; --index >= 0;) {\n next(index, batch);\n }\n }\n }\n public countBy(name: Col | string) {\n const batches = this.chunks, numBatches = batches.length;\n const count_by = typeof name === 'string' ? new Col(name) : name as Col;\n // Assume that all dictionary batches are deltas, which means that the\n // last record batch has the most complete dictionary\n count_by.bind(batches[numBatches - 1]);\n const vector = count_by.vector as V;\n if (!DataType.isDictionary(vector.type)) {\n throw new Error('countBy currently only supports dictionary-encoded columns');\n }\n\n const countByteLength = Math.ceil(Math.log(vector.length) / Math.log(256));\n const CountsArrayType = countByteLength == 4 ? Uint32Array :\n countByteLength >= 2 ? Uint16Array : Uint8Array;\n\n const counts = new CountsArrayType(vector.dictionary.length);\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n // rebind the countBy Col\n count_by.bind(batch);\n const keys = (count_by.vector as V).indices;\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n let key = keys.get(index);\n if (key !== null) { counts[key]++; }\n }\n }\n return new CountByResult(vector.dictionary, IntVector.from(counts));\n }\n}\n\n/** @ignore */\nexport class CountByResult extends Table<{ values: T, counts: TCount }> {\n constructor(values: Vector, counts: V) {\n type R = { values: T, counts: TCount };\n const schema = new Schema([\n new Field('values', values.type),\n new Field('counts', counts.type)\n ]);\n super(new RecordBatch(schema, counts.length, [values, counts]));\n }\n public toJSON(): Object {\n const values = this.getColumnAt(0)!;\n const counts = this.getColumnAt(1)!;\n const result = {} as { [k: string]: number | null };\n for (let i = -1; ++i < this.length;) {\n result[values.get(i)] = counts.get(i);\n }\n return result;\n }\n}\n\n/** @ignore */\nexport class FilteredDataFrame extends DataFrame {\n private _predicate: Predicate;\n constructor (batches: RecordBatch[], predicate: Predicate) {\n super(batches);\n this._predicate = predicate;\n }\n public scan(next: NextFunc, bind?: BindFunc) {\n // inlined version of this:\n // this.parent.scan((idx, columns) => {\n // if (this.predicate(idx, columns)) next(idx, columns);\n // });\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n // TODO: bind batches lazily\n // If predicate doesn't match anything in the batch we don't need\n // to bind the callback\n if (bind) { bind(batch); }\n const predicate = this._predicate.bind(batch);\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n if (predicate(index, batch)) { next(index, batch); }\n }\n }\n }\n public scanReverse(next: NextFunc, bind?: BindFunc) {\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = numBatches; --batchIndex >= 0;) {\n // load batches\n const batch = batches[batchIndex];\n // TODO: bind batches lazily\n // If predicate doesn't match anything in the batch we don't need\n // to bind the callback\n if (bind) { bind(batch); }\n const predicate = this._predicate.bind(batch);\n // yield all indices\n for (let index = batch.length; --index >= 0;) {\n if (predicate(index, batch)) { next(index, batch); }\n }\n }\n }\n public count(): number {\n // inlined version of this:\n // let sum = 0;\n // this.parent.scan((idx, columns) => {\n // if (this.predicate(idx, columns)) ++sum;\n // });\n // return sum;\n let sum = 0;\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n const predicate = this._predicate.bind(batch);\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n if (predicate(index, batch)) { ++sum; }\n }\n }\n return sum;\n }\n public *[Symbol.iterator](): IterableIterator['TValue']> {\n // inlined version of this:\n // this.parent.scan((idx, columns) => {\n // if (this.predicate(idx, columns)) next(idx, columns);\n // });\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n // TODO: bind batches lazily\n // If predicate doesn't match anything in the batch we don't need\n // to bind the callback\n const predicate = this._predicate.bind(batch);\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n if (predicate(index, batch)) { yield batch.get(index) as any; }\n }\n }\n }\n public filter(predicate: Predicate): FilteredDataFrame {\n return new FilteredDataFrame(\n this._chunks,\n this._predicate.and(predicate)\n );\n }\n public countBy(name: Col | string) {\n const batches = this._chunks, numBatches = batches.length;\n const count_by = typeof name === 'string' ? new Col(name) : name as Col;\n // Assume that all dictionary batches are deltas, which means that the\n // last record batch has the most complete dictionary\n count_by.bind(batches[numBatches - 1]);\n const vector = count_by.vector as V;\n if (!DataType.isDictionary(vector.type)) {\n throw new Error('countBy currently only supports dictionary-encoded columns');\n }\n\n const countByteLength = Math.ceil(Math.log(vector.length) / Math.log(256));\n const CountsArrayType = countByteLength == 4 ? Uint32Array :\n countByteLength >= 2 ? Uint16Array : Uint8Array;\n\n const counts = new CountsArrayType(vector.dictionary.length);\n\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n const predicate = this._predicate.bind(batch);\n // rebind the countBy Col\n count_by.bind(batch);\n const keys = (count_by.vector as V).indices;\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n let key = keys.get(index);\n if (key !== null && predicate(index, batch)) { counts[key]++; }\n }\n }\n return new CountByResult(vector.dictionary, IntVector.from(counts));\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nexport { ArrowType, DateUnit, IntervalUnit, MessageHeader, MetadataVersion, Precision, TimeUnit, Type, UnionMode, BufferType } from './enum';\nexport { Data } from './data';\nexport {\n DataType,\n Null,\n Bool,\n Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64,\n Float, Float16, Float32, Float64,\n Utf8,\n Binary,\n FixedSizeBinary,\n Date_, DateDay, DateMillisecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Decimal,\n List,\n Struct,\n Union, DenseUnion, SparseUnion,\n Dictionary,\n Interval, IntervalDayTime, IntervalYearMonth,\n FixedSizeList,\n Map_,\n} from './type';\n\nexport { Table } from './table';\nexport { Column } from './column';\nexport { Visitor } from './visitor';\nexport { Schema, Field } from './schema';\nexport {\n Vector,\n BaseVector,\n BinaryVector,\n BoolVector,\n Chunked,\n DateVector, DateDayVector, DateMillisecondVector,\n DecimalVector,\n DictionaryVector,\n FixedSizeBinaryVector,\n FixedSizeListVector,\n FloatVector, Float16Vector, Float32Vector, Float64Vector,\n IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector,\n IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector,\n ListVector,\n MapVector,\n NullVector,\n StructVector,\n TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector,\n TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector,\n UnionVector, DenseUnionVector, SparseUnionVector,\n Utf8Vector,\n} from './vector/index';\n\nexport {\n Builder,\n BinaryBuilder,\n BoolBuilder,\n DateBuilder, DateDayBuilder, DateMillisecondBuilder,\n DecimalBuilder,\n DictionaryBuilder,\n FixedSizeBinaryBuilder,\n FixedSizeListBuilder,\n FloatBuilder, Float16Builder, Float32Builder, Float64Builder,\n IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder,\n IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder,\n ListBuilder,\n MapBuilder,\n NullBuilder,\n StructBuilder,\n TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder,\n TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder,\n UnionBuilder, DenseUnionBuilder, SparseUnionBuilder,\n Utf8Builder,\n} from './builder/index';\n\nexport { ByteStream, AsyncByteStream, AsyncByteQueue, ReadableSource, WritableSink } from './io/stream';\nexport { RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader } from './ipc/reader';\nexport { RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter } from './ipc/writer';\nexport { MessageReader, AsyncMessageReader, JSONMessageReader } from './ipc/message';\nexport { Message } from './ipc/metadata/message';\nexport { RecordBatch } from './recordbatch';\nexport { ArrowJSONLike, FileHandle, Readable, Writable, ReadableWritable, ReadableDOMStreamOptions } from './io/interfaces';\nexport { DataFrame, FilteredDataFrame, CountByResult, BindFunc, NextFunc } from './compute/dataframe';\n\nimport * as util_bn_ from './util/bn';\nimport * as util_int_ from './util/int';\nimport * as util_bit_ from './util/bit';\nimport * as util_math_ from './util/math';\nimport * as util_buffer_ from './util/buffer';\nimport * as util_vector_ from './util/vector';\nimport * as predicate from './compute/predicate';\n\nexport { predicate };\n/** @ignore */\nexport const util = {\n ...util_bn_,\n ...util_int_,\n ...util_bit_,\n ...util_math_,\n ...util_buffer_,\n ...util_vector_\n};\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './io/adapters';\nimport { Builder } from './builder/index';\nimport { RecordBatchReader } from './ipc/reader';\nimport { RecordBatchWriter } from './ipc/writer';\nimport { toDOMStream } from './io/whatwg/iterable';\nimport { builderThroughDOMStream } from './io/whatwg/builder';\nimport { recordBatchReaderThroughDOMStream } from './io/whatwg/reader';\nimport { recordBatchWriterThroughDOMStream } from './io/whatwg/writer';\n\nstreamAdapters.toDOMStream = toDOMStream;\nBuilder['throughDOM'] = builderThroughDOMStream;\nRecordBatchReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\n\nexport {\n ArrowType, DateUnit, IntervalUnit, MessageHeader, MetadataVersion, Precision, TimeUnit, Type, UnionMode, BufferType,\n Data,\n DataType,\n Null,\n Bool,\n Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64,\n Float, Float16, Float32, Float64,\n Utf8,\n Binary,\n FixedSizeBinary,\n Date_, DateDay, DateMillisecond,\n Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n Decimal,\n List,\n Struct,\n Union, DenseUnion, SparseUnion,\n Dictionary,\n Interval, IntervalDayTime, IntervalYearMonth,\n FixedSizeList,\n Map_,\n Table,\n Column,\n Schema, Field,\n Visitor,\n Vector,\n BaseVector,\n BinaryVector,\n BoolVector,\n Chunked,\n DateVector, DateDayVector, DateMillisecondVector,\n DecimalVector,\n DictionaryVector,\n FixedSizeBinaryVector,\n FixedSizeListVector,\n FloatVector, Float16Vector, Float32Vector, Float64Vector,\n IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector,\n IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector,\n ListVector,\n MapVector,\n NullVector,\n StructVector,\n TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector,\n TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector,\n UnionVector, DenseUnionVector, SparseUnionVector,\n Utf8Vector,\n ByteStream, AsyncByteStream, AsyncByteQueue, ReadableSource, WritableSink,\n RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader,\n RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter,\n MessageReader, AsyncMessageReader, JSONMessageReader,\n Message,\n RecordBatch,\n ArrowJSONLike, FileHandle, Readable, Writable, ReadableWritable, ReadableDOMStreamOptions,\n DataFrame, FilteredDataFrame, CountByResult, BindFunc, NextFunc,\n predicate,\n util,\n Builder,\n BinaryBuilder,\n BoolBuilder,\n DateBuilder, DateDayBuilder, DateMillisecondBuilder,\n DecimalBuilder,\n DictionaryBuilder,\n FixedSizeBinaryBuilder,\n FixedSizeListBuilder,\n FloatBuilder, Float16Builder, Float32Builder, Float64Builder,\n IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder,\n IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder,\n ListBuilder,\n MapBuilder,\n NullBuilder,\n StructBuilder,\n TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder,\n TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder,\n UnionBuilder, DenseUnionBuilder, SparseUnionBuilder,\n Utf8Builder,\n} from './Arrow';\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { toUint8Array } from '../../util/buffer';\nimport { ReadableDOMStreamOptions } from '../../io/interfaces';\nimport { isIterable, isAsyncIterable } from '../../util/compat';\n\n/** @ignore */\nexport function toDOMStream(source: Iterable | AsyncIterable, options?: ReadableDOMStreamOptions): ReadableStream {\n if (isAsyncIterable(source)) { return asyncIterableAsReadableDOMStream(source, options); }\n if (isIterable(source)) { return iterableAsReadableDOMStream(source, options); }\n /* istanbul ignore next */\n throw new Error(`toDOMStream() must be called with an Iterable or AsyncIterable`);\n}\n\n/** @ignore */\nfunction iterableAsReadableDOMStream(source: Iterable, options?: ReadableDOMStreamOptions) {\n\n let it: Iterator | null = null;\n const bm = (options && options.type === 'bytes') || false;\n const hwm = options && options.highWaterMark || (2 ** 24);\n\n return new ReadableStream({\n ...options as any,\n start(controller) { next(controller, it || (it = source[Symbol.iterator]())); },\n pull(controller) { it ? (next(controller, it)) : controller.close(); },\n cancel() { (it && (it.return && it.return()) || true) && (it = null); }\n }, { highWaterMark: bm ? hwm : undefined, ...options });\n\n function next(controller: ReadableStreamDefaultController, it: Iterator) {\n let buf: Uint8Array;\n let r: IteratorResult | null = null;\n let size = controller.desiredSize || null;\n while (!(r = it.next(bm ? size : null)).done) {\n if (ArrayBuffer.isView(r.value) && (buf = toUint8Array(r.value))) {\n size != null && bm && (size = size - buf.byteLength + 1);\n r.value = buf;\n }\n controller.enqueue(r.value);\n if (size != null && --size <= 0) { return; }\n }\n controller.close();\n }\n}\n\n/** @ignore */\nfunction asyncIterableAsReadableDOMStream(source: AsyncIterable, options?: ReadableDOMStreamOptions) {\n\n let it: AsyncIterator | null = null;\n const bm = (options && options.type === 'bytes') || false;\n const hwm = options && options.highWaterMark || (2 ** 24);\n\n return new ReadableStream({\n ...options as any,\n async start(controller) { await next(controller, it || (it = source[Symbol.asyncIterator]())); },\n async pull(controller) { it ? (await next(controller, it)) : controller.close(); },\n async cancel() { (it && (it.return && await it.return()) || true) && (it = null); },\n }, { highWaterMark: bm ? hwm : undefined, ...options });\n\n async function next(controller: ReadableStreamDefaultController, it: AsyncIterator) {\n let buf: Uint8Array;\n let r: IteratorResult | null = null;\n let size = controller.desiredSize || null;\n while (!(r = await it.next(bm ? size : null)).done) {\n if (ArrayBuffer.isView(r.value) && (buf = toUint8Array(r.value))) {\n size != null && bm && (size = size - buf.byteLength + 1);\n r.value = buf;\n }\n controller.enqueue(r.value);\n if (size != null && --size <= 0) { return; }\n }\n controller.close();\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { DataType } from '../../type';\nimport { RecordBatch } from '../../recordbatch';\nimport { AsyncByteQueue } from '../../io/stream';\nimport { RecordBatchReader } from '../../ipc/reader';\n\n/** @ignore */\nexport function recordBatchReaderThroughDOMStream(writableStrategy?: ByteLengthQueuingStrategy, readableStrategy?: { autoDestroy: boolean }) {\n\n const queue = new AsyncByteQueue();\n let reader: RecordBatchReader | null = null;\n\n const readable = new ReadableStream>({\n async cancel() { await queue.close(); },\n async start(controller) { await next(controller, reader || (reader = await open())); },\n async pull(controller) { reader ? await next(controller, reader) : controller.close(); }\n });\n\n return { writable: new WritableStream(queue, { 'highWaterMark': 2 ** 14, ...writableStrategy }), readable };\n\n async function open() {\n return await (await RecordBatchReader.from(queue)).open(readableStrategy);\n }\n\n async function next(controller: ReadableStreamDefaultController>, reader: RecordBatchReader) {\n let size = controller.desiredSize;\n let r: IteratorResult> | null = null;\n while (!(r = await reader.next()).done) {\n controller.enqueue(r.value);\n if (size != null && --size <= 0) {\n return;\n }\n }\n controller.close();\n }\n}\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { DataType } from '../../type';\nimport { RecordBatch } from '../../recordbatch';\nimport { AsyncByteStream } from '../../io/stream';\nimport { RecordBatchWriter } from '../../ipc/writer';\n\n/** @ignore */\nexport function recordBatchWriterThroughDOMStream(\n this: typeof RecordBatchWriter,\n writableStrategy?: QueuingStrategy> & { autoDestroy: boolean },\n readableStrategy?: { highWaterMark?: number, size?: any }\n) {\n\n const writer = new this(writableStrategy);\n const reader = new AsyncByteStream(writer);\n const readable = new ReadableStream({\n type: 'bytes',\n async cancel() { await reader.cancel(); },\n async pull(controller) { await next(controller); },\n async start(controller) { await next(controller); },\n }, { 'highWaterMark': 2 ** 14, ...readableStrategy });\n\n return { writable: new WritableStream(writer, writableStrategy), readable };\n\n async function next(controller: ReadableStreamDefaultController) {\n let buf: Uint8Array | null = null;\n let size = controller.desiredSize;\n while (buf = await reader.read(size || null)) {\n controller.enqueue(buf);\n if (size != null && (size -= buf.byteLength) <= 0) { return; }\n }\n controller.close();\n }\n}\n","import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../modules/module-injectors';\nimport {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {assert} from '../utils';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__'; // Uniform/attribute declarations\n\nconst REGEX_START_OF_MAIN = /void main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\n\n// A minimal shader injection/templating system.\n// RFC: https://github.com/uber/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n/* eslint-disable complexity */\nexport default function injectShader(source, type, inject, injectStandardStubs) {\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // main code is injected at the end of main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n/* eslint-enable complexity */\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n","export const MODULE_INJECTORS_VS = `\\\n#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`;\n\nexport const MODULE_INJECTORS_FS = `\\\n#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;\n","import GL from '@luma.gl/constants';\nimport {assert} from '../utils';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n","import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {withParameters, log} from '@luma.gl/gltools';\nimport {assertWebGL2Context, flipRows, scalePixels} from '../webgl-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = {}\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n assertWebGL2Context(gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl, {framebuffer}, () => {\n gl.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n /* global document */\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n /* global Image */\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(\n source,\n target,\n {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n\n targetX,\n targetY,\n targetZ,\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA,\n\n width, // defaults to target width\n height // defaults to target height\n } = {}\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n gl.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(\n source,\n target,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n sourceX0 = 0,\n sourceY0 = 0,\n sourceX1,\n sourceY1,\n targetX0 = 0,\n targetY0 = 0,\n targetX1,\n targetY1,\n color = true,\n depth = false,\n stencil = false,\n mask = 0,\n filter = GL.NEAREST\n } = {}\n) {\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl.readBuffer(sourceAttachment);\n gl.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl.readBuffer(readBuffer);\n gl.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n","/* Use as\nimport {checkProps} from '../util/check-props;'\n\nconst PROP_CHECKS = {\n // Removed props no longer supported, print error and link to upgrade guide\n removedProps: {\n },\n // Deprecated props\n deprecatedProps: {\n offset: 'accessor',\n stride: 'accessor',\n type: 'accessor',\n size: 'accessor',\n divisor: 'accessor',\n normalized: 'accessor',\n integer: 'accessor'\n },\n // Deprecated props that can be autosubstituted, print warning and return updated props object\n replacedProps: {\n bytes: 'byteLength'\n }\n}\n\nclass Buffer {\n setProps(props) {\n checkProps('Buffer', props, PROP_CHECKS);\n }\n}\n*/\nimport {log} from '@luma.gl/gltools';\n\nexport function checkProps(className, props, propChecks) {\n const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;\n\n // removedProps: Removed props no longer supported\n // print error and link to upgrade guide\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';\n log.removed(`${className}.${propName}`, replacement)();\n }\n }\n\n // deprecatedProps: Deprecated props that can not be autosubstituted\n // print warning and rely on caller to substitute\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n }\n }\n\n // replacedProps: Deprecated props that can be autosubstituted\n // print warning and return updated props object\n let newProps = null;\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","// WebGL1/WebGL2 extension polyfill support\n//\n// Provides a function that creates polyfills for WebGL2 functions based\n// on available extensions and installs them on a supplied target (could be\n// the WebGLContext or its prototype, or a separate object).\n//\n// This is intended to be a stand-alone file with minimal dependencies,\n// easy to reuse or repurpose in other projects.\n\n/* eslint-disable camelcase, brace-style */\nimport {assert} from '../utils';\n\nimport {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';\n\n// Registers extensions, polyfills or mock functions for extensions in the polyfills list\n// TODO - remove use of name `luma`.\nexport default function polyfillContext(gl) {\n gl.luma = gl.luma || {};\n initializeExtensions(gl);\n if (!gl.luma.polyfilled) {\n installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n installOverrides(gl, {target: gl.luma, target2: gl});\n gl.luma.polyfilled = true;\n }\n return gl;\n}\n\n// TODO - is this still required?\n/* global window, global */\nconst global_ = typeof global !== 'undefined' ? global : window;\nglobal_.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n gl.luma.extensions = {};\n // `getSupportedExtensions` can return null when context is lost.\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n for (const extension of EXTENSIONS) {\n gl.luma[extension] = gl.getExtension(extension);\n }\n}\n\n// Install simple overrides (mostly get* functions)\nfunction installOverrides(gl, {target, target2}) {\n Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n // install an override, if no implementation was detected\n const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\n\nfunction installPolyfills(gl, polyfills) {\n for (const extension of Object.getOwnPropertyNames(polyfills)) {\n if (extension !== 'overrides') {\n polyfillExtension(gl, {extension, target: gl.luma, target2: gl});\n }\n }\n}\n\n// Polyfills a single WebGL extension into the `target` object\nfunction polyfillExtension(gl, {extension, target, target2}) {\n const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n assert(defaults);\n\n const {meta = {}} = defaults;\n const {suffix = ''} = meta;\n\n const ext = gl.getExtension(extension);\n\n for (const key of Object.keys(defaults)) {\n const extKey = `${key}${suffix}`;\n\n let polyfill = null;\n if (key === 'meta') {\n // ignore\n } else if (typeof gl[key] === 'function') {\n // WebGL2 implementation is already\n } else if (ext && typeof ext[extKey] === 'function') {\n // pick extension implemenentation,if available\n polyfill = (...args) => ext[extKey](...args);\n } else if (typeof defaults[key] === 'function') {\n // pick the mock implementation, if no implementation was detected\n polyfill = defaults[key].bind(target);\n }\n\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport project from '../project/project';\n\nconst vs = `\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`;\n\nexport default {\n name: 'project32',\n dependencies: [project],\n vs\n};\n","const DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n uniforms.picking_uHighlightColor = opts.pickingHighlightColor.map(x => x / 255);\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\nexport default {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n","import {picking} from '@luma.gl/core';\n\nexport default Object.assign(\n {\n inject: {\n 'vs:DECKGL_FILTER_COLOR': `\n picking_setPickingColor(geometry.pickingColor);\n // for picking depth values\n picking_setPickingAttribute(geometry.position.z);\n `,\n 'fs:DECKGL_FILTER_COLOR': {\n order: 99,\n injection: `\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `\n }\n }\n },\n picking\n);\n","import MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport assert from '../../lib/assert';\n\nexport default class Vector extends MathArray {\n // ACCESSORS\n\n get x() {\n return this[0];\n }\n set x(value) {\n return (this[0] = checkNumber(value));\n }\n\n get y() {\n return this[1];\n }\n set y(value) {\n return (this[1] = checkNumber(value));\n }\n\n // NOTE: `length` is a reserved word for Arrays, so we can't use `v.length()`\n // Offer `len` and `magnitude`\n len() {\n return Math.sqrt(this.lengthSquared());\n }\n\n magnitude() {\n return this.len();\n }\n\n lengthSquared() {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n return length;\n }\n\n magnitudeSquared() {\n return this.lengthSquared();\n }\n\n distance(mathArray) {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray) {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return checkNumber(length);\n }\n\n dot(mathArray) {\n let product = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n return checkNumber(product);\n }\n\n // MODIFIERS\n\n normalize() {\n const length = this.magnitude();\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n return this.check();\n }\n\n // negate() {\n // for (let i = 0; i < this.ELEMENTS; ++i) {\n // this[i] = -this[i];\n // }\n // return this.check();\n // }\n\n // inverse() {\n // for (let i = 0; i < this.ELEMENTS; ++i) {\n // this[i] = 1 / this[i];\n // }\n // return this.check();\n // }\n\n multiply(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n return this.check();\n }\n\n divide(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n return this.check();\n }\n\n // THREE.js compatibility\n lengthSq() {\n return this.lengthSquared();\n }\n\n distanceTo(vector) {\n return this.distance(vector);\n }\n\n distanceToSquared(vector) {\n return this.distanceSquared(vector);\n }\n\n getComponent(i) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i, value) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a, b) {\n return this.copy(a).add(b);\n }\n\n subVectors(a, b) {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a, b) {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a, b) {\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\n\nimport * as vec3 from 'gl-matrix/vec3';\nimport {vec3_transformMat2, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\n\nconst ORIGIN = [0, 0, 0];\n\nexport default class Vector3 extends Vector {\n constructor(x = 0, y = 0, z = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0);\n if (arguments.length === 1 && isArray(x)) {\n this.copy(x);\n } else {\n // this.set(x, y, z);\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n checkNumber(z);\n }\n this[0] = x;\n this[1] = y;\n this[2] = z;\n }\n }\n\n set(x, y, z) {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n return this.check();\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n return this.check();\n }\n\n fromObject(object) {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n checkNumber(object.z);\n }\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n return this.check();\n }\n\n toObject(object) {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n return object;\n }\n\n // Getters/setters\n /* eslint-disable no-multi-spaces, brace-style, no-return-assign */\n get ELEMENTS() {\n return 3;\n }\n\n // x,y inherited from Vector\n\n get z() {\n return this[2];\n }\n set z(value) {\n return (this[2] = checkNumber(value));\n }\n /* eslint-enable no-multi-spaces, brace-style, no-return-assign */\n\n angle(vector) {\n return vec3.angle(this, vector);\n }\n\n // MODIFIERS\n\n cross(vector) {\n vec3.cross(this, this, vector);\n return this.check();\n }\n\n rotateX({radians, origin = ORIGIN}) {\n vec3.rotateX(this, this, origin, radians);\n return this.check();\n }\n\n rotateY({radians, origin = ORIGIN}) {\n vec3.rotateY(this, this, origin, radians);\n return this.check();\n }\n\n rotateZ({radians, origin = ORIGIN}) {\n vec3.rotateZ(this, this, origin, radians);\n return this.check();\n }\n\n // Transforms\n\n // transforms as point (4th component is implicitly 1)\n transform(matrix4) {\n return this.transformAsPoint(matrix4);\n }\n\n // transforms as point (4th component is implicitly 1)\n transformAsPoint(matrix4) {\n vec3.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n transformAsVector(matrix4) {\n vec3_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3) {\n vec3.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2(matrix2) {\n vec3_transformMat2(this, this, matrix2);\n return this.check();\n }\n\n transformByQuaternion(quaternion) {\n vec3.transformQuat(this, this, quaternion);\n return this.check();\n }\n}\n","import MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport {config} from '../../lib/common';\n\nexport default class Matrix extends MathArray {\n // fromObject(object) {\n // const array = object.elements;\n // return this.fromRowMajor(array);\n // }\n\n // toObject(object) {\n // const array = object.elements;\n // this.toRowMajor(array);\n // return object;\n // }\n\n toString() {\n let string = '[';\n if (config.printRowMajor) {\n string += 'row-major:';\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += ` ${this[col * this.RANK + row]}`;\n }\n }\n } else {\n string += 'column-major:';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += ` ${this[i]}`;\n }\n }\n string += ']';\n return string;\n }\n\n getElementIndex(row, col) {\n return col * this.RANK + row;\n }\n\n // By default assumes row major indices\n getElement(row, col) {\n return this[col * this.RANK + row];\n }\n\n // By default assumes row major indices\n setElement(row, col, value) {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n\n getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n return result;\n }\n\n setColumn(columnIndex, columnVector) {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n return this;\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {checkVector, deprecated} from '../lib/validators';\nimport Matrix from './base/matrix';\n\nimport {vec2_transformMat4AsVector, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nconst IDENTITY = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\nconst ZERO = Object.freeze([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n\nconst INDICES = Object.freeze({\n COL0ROW0: 0,\n COL0ROW1: 1,\n COL0ROW2: 2,\n COL0ROW3: 3,\n COL1ROW0: 4,\n COL1ROW1: 5,\n COL1ROW2: 6,\n COL1ROW3: 7,\n COL2ROW0: 8,\n COL2ROW1: 9,\n COL2ROW2: 10,\n COL2ROW3: 11,\n COL3ROW0: 12,\n COL3ROW1: 13,\n COL3ROW2: 14,\n COL3ROW3: 15\n});\n\nconst constants = {};\n\nexport default class Matrix4 extends Matrix {\n static get IDENTITY() {\n constants.IDENTITY = constants.IDENTITY || Object.freeze(new Matrix4(IDENTITY));\n return constants.IDENTITY;\n }\n\n static get ZERO() {\n constants.ZERO = constants.ZERO || Object.freeze(new Matrix4(ZERO));\n return constants.ZERO;\n }\n\n get INDICES() {\n return INDICES;\n }\n\n get ELEMENTS() {\n return 16;\n }\n\n get RANK() {\n return 4;\n }\n\n constructor(array) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n set(m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n // accepts row major order, stores as column major\n // eslint-disable-next-line max-params\n setRowMajor(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result) {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n // Constructors\n\n identity() {\n return this.copy(IDENTITY);\n }\n\n // Calculates a 4x4 matrix from the given quaternion\n // q quat Quaternion to create matrix from\n fromQuaternion(q) {\n mat4.fromQuat(this, q);\n return this.check();\n }\n\n // Generates a frustum matrix with the given bounds\n // left Number Left bound of the frustum\n // right Number Right bound of the frustum\n // bottom Number Bottom bound of the frustum\n // top Number Top bound of the frustum\n // near Number Near bound of the frustum\n // far Number Far bound of the frustum\n frustum({left, right, bottom, top, near, far}) {\n if (far === Infinity) {\n Matrix4._computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n static _computeInfinitePerspectiveOffCenter(result, left, right, bottom, top, near) {\n const column0Row0 = (2.0 * near) / (right - left);\n const column1Row1 = (2.0 * near) / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1.0;\n const column2Row3 = -1.0;\n const column3Row2 = -2.0 * near;\n\n result[0] = column0Row0;\n result[1] = 0.0;\n result[2] = 0.0;\n result[3] = 0.0;\n result[4] = 0.0;\n result[5] = column1Row1;\n result[6] = 0.0;\n result[7] = 0.0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0.0;\n result[13] = 0.0;\n result[14] = column3Row2;\n result[15] = 0.0;\n return result;\n }\n\n // Generates a look-at matrix with the given eye position, focal point,\n // and up axis\n // eye vec3 Position of the viewer\n // center vec3 Point the viewer is looking at\n // up vec3 vec3 pointing up\n lookAt(eye, center, up) {\n // Signature: lookAt({eye, center = [0, 0, 0], up = [0, 1, 0]}))\n if (arguments.length === 1) {\n ({eye, center, up} = eye);\n }\n\n center = center || [0, 0, 0];\n up = up || [0, 1, 0];\n\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n // Generates a orthogonal projection matrix with the given bounds\n // from \"traditional\" view space parameters\n // left number Left bound of the frustum\n // right number Right bound of the frustum\n // bottom number Bottom bound of the frustum\n // top number Top bound of the frustum\n // near number Near bound of the frustum\n // far number Far bound of the frustum\n ortho({left, right, bottom, top, near = 0.1, far = 500}) {\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n // Generates an orthogonal projection matrix with the same parameters\n // as a perspective matrix (plus focalDistance)\n // fovy number Vertical field of view in radians\n // aspect number Aspect ratio. typically viewport width/height\n // focalDistance distance in the view frustum used for extent calculations\n // near number Near bound of the frustum\n // far number Far bound of the frustum\n orthographic({\n fovy = (45 * Math.PI) / 180,\n aspect = 1,\n focalDistance = 1,\n near = 0.1,\n far = 500\n }) {\n if (fovy > Math.PI * 2) {\n throw Error('radians');\n }\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY); // focus_plane is the distance from the camera\n const right = top * aspect;\n\n return new Matrix4().ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n // Generates a perspective projection matrix with the given bounds\n // fovy number Vertical field of view in radians\n // aspect number Aspect ratio. typically viewport width/height\n // near number Near bound of the frustum\n // far number Far bound of the frustum\n perspective({\n fovy,\n fov = (45 * Math.PI) / 180, // DEPRECATED\n aspect = 1,\n near = 0.1,\n far = 500\n } = {}) {\n fovy = fovy || fov;\n if (fovy > Math.PI * 2) {\n throw Error('radians');\n }\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n // Accessors\n\n determinant() {\n return mat4.determinant(this);\n }\n\n // Extracts the non-uniform scale assuming the matrix is an affine transformation.\n // The scales are the \"lengths\" of the column vectors in the upper-left 3x3 matrix.\n getScale(result = [-0, -0, -0]) {\n // explicit is faster than hypot...\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n // result[0] = Math.hypot(this[0], this[1], this[2]);\n // result[1] = Math.hypot(this[4], this[5], this[6]);\n // result[2] = Math.hypot(this[8], this[9], this[10]);\n return result;\n }\n\n // Gets the translation portion, assuming the matrix is a affine transformation matrix.\n getTranslation(result = [-0, -0, -0]) {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n // Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n getRotation(\n result = [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0],\n scaleResult = null\n ) {\n const scale = this.getScale(scaleResult || [-0, -0, -0]);\n\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n getRotationMatrix3(result = [-0, -0, -0, -0, -0, -0, -0, -0, -0], scaleResult = null) {\n const scale = this.getScale(scaleResult || [-0, -0, -0]);\n\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n // Modifiers\n\n transpose() {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert() {\n mat4.invert(this, this);\n return this.check();\n }\n\n // Operations\n\n multiplyLeft(a) {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a) {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the X axis\n rotateX(radians) {\n mat4.rotateX(this, this, radians);\n // mat4.rotate(this, this, radians, [1, 0, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Y axis.\n rotateY(radians) {\n mat4.rotateY(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 1, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Z axis.\n rotateZ(radians) {\n mat4.rotateZ(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 0, 1]);\n return this.check();\n }\n\n rotateXYZ([rx, ry, rz]) {\n return this.rotateX(rx)\n .rotateY(ry)\n .rotateZ(rz);\n }\n\n rotateAxis(radians, axis) {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n scale(factor) {\n if (Array.isArray(factor)) {\n mat4.scale(this, this, factor);\n } else {\n mat4.scale(this, this, [factor, factor, factor]);\n }\n\n return this.check();\n }\n\n translate(vec) {\n mat4.translate(this, this, vec);\n return this.check();\n }\n\n // Transforms\n\n // Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n transform(vector, result) {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n\n // Transforms any 2 or 3 element array as point (w implicitly 1)\n transformAsPoint(vector, result) {\n const {length} = vector;\n switch (length) {\n case 2:\n result = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n // Transforms any 2 or 3 element array as vector (w implicitly 0)\n transformAsVector(vector, result) {\n switch (vector.length) {\n case 2:\n result = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n case 3:\n result = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(result, vector.length);\n return result;\n }\n\n // three.js math API compatibility\n makeRotationX(radians) {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x, y, z) {\n return this.identity().translate([x, y, z]);\n }\n\n // DEPRECATED in 3.0\n\n transformPoint(vector, result) {\n deprecated('Matrix4.transformPoint', '3.0');\n return this.transformAsPoint(vector, result);\n }\n\n transformVector(vector, result) {\n deprecated('Matrix4.transformVector', '3.0');\n return this.transformAsPoint(vector, result);\n }\n\n transformDirection(vector, result) {\n deprecated('Matrix4.transformDirection', '3.0');\n return this.transformAsVector(vector, result);\n }\n}\n","'use strict';\n\nmodule.exports = TinySDF;\nmodule.exports.default = TinySDF;\n\nvar INF = 1e20;\n\nfunction TinySDF(fontSize, buffer, radius, cutoff, fontFamily, fontWeight) {\n this.fontSize = fontSize || 24;\n this.buffer = buffer === undefined ? 3 : buffer;\n this.cutoff = cutoff || 0.25;\n this.fontFamily = fontFamily || 'sans-serif';\n this.fontWeight = fontWeight || 'normal';\n this.radius = radius || 8;\n var size = this.size = this.fontSize + this.buffer * 2;\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = this.canvas.height = size;\n\n this.ctx = this.canvas.getContext('2d');\n this.ctx.font = this.fontWeight + ' ' + this.fontSize + 'px ' + this.fontFamily;\n this.ctx.textBaseline = 'middle';\n this.ctx.fillStyle = 'black';\n\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.d = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Int16Array(size);\n\n // hack around https://bugzilla.mozilla.org/show_bug.cgi?id=737852\n this.middle = Math.round((size / 2) * (navigator.userAgent.indexOf('Gecko/') >= 0 ? 1.2 : 1));\n}\n\nTinySDF.prototype.draw = function (char) {\n this.ctx.clearRect(0, 0, this.size, this.size);\n this.ctx.fillText(char, this.buffer, this.middle);\n\n var imgData = this.ctx.getImageData(0, 0, this.size, this.size);\n var alphaChannel = new Uint8ClampedArray(this.size * this.size);\n\n for (var i = 0; i < this.size * this.size; i++) {\n var a = imgData.data[i * 4 + 3] / 255; // alpha value\n this.gridOuter[i] = a === 1 ? 0 : a === 0 ? INF : Math.pow(Math.max(0, 0.5 - a), 2);\n this.gridInner[i] = a === 1 ? INF : a === 0 ? 0 : Math.pow(Math.max(0, a - 0.5), 2);\n }\n\n edt(this.gridOuter, this.size, this.size, this.f, this.d, this.v, this.z);\n edt(this.gridInner, this.size, this.size, this.f, this.d, this.v, this.z);\n\n for (i = 0; i < this.size * this.size; i++) {\n var d = this.gridOuter[i] - this.gridInner[i];\n alphaChannel[i] = Math.max(0, Math.min(255, Math.round(255 - 255 * (d / this.radius + this.cutoff))));\n }\n\n return alphaChannel;\n};\n\n// 2D Euclidean distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, width, height, f, d, v, z) {\n for (var x = 0; x < width; x++) {\n for (var y = 0; y < height; y++) {\n f[y] = data[y * width + x];\n }\n edt1d(f, d, v, z, height);\n for (y = 0; y < height; y++) {\n data[y * width + x] = d[y];\n }\n }\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n f[x] = data[y * width + x];\n }\n edt1d(f, d, v, z, width);\n for (x = 0; x < width; x++) {\n data[y * width + x] = Math.sqrt(d[x]);\n }\n }\n}\n\n// 1D squared distance transform\nfunction edt1d(f, d, v, z, n) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = +INF;\n\n for (var q = 1, k = 0; q < n; q++) {\n var s = ((f[q] + q * q) - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]);\n while (s <= z[k]) {\n k--;\n s = ((f[q] + q * q) - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]);\n }\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = +INF;\n }\n\n for (q = 0, k = 0; q < n; q++) {\n while (z[k + 1] < q) k++;\n d[q] = (q - v[k]) * (q - v[k]) + f[v[k]];\n }\n}\n","import {normalizeLoader} from './loader-utils/normalize-loader';\n\nlet registeredLoaders = [];\n\nexport function registerLoaders(loaders) {\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!registeredLoaders.find(registeredLoader => normalizedLoader === registeredLoader)) {\n // add to the beginning of the registeredLoaders, so the last registeredLoader get picked\n registeredLoaders.unshift(normalizedLoader);\n }\n }\n}\n\nexport function getRegisteredLoaders() {\n return registeredLoaders;\n}\n\n// For testing\nexport function _unregisterLoaders() {\n registeredLoaders = [];\n}\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n var l = str.length,\n h = l ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = createElement(type, newProps);\n\n return ele;\n};\n\nvar Emotion =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache, ref) {\n // use Context.read for the theme when it's stable\n if (typeof props.css === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/^.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global =\n/* #__PURE__ */\nwithEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n\n {\n insertStyles(context, serialized, false);\n }\n\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n\n return ele;\n });\n});\n\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };\n","import _typeof from '@babel/runtime/helpers/esm/typeof';\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, state, className) {\n var arr = [className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\nexport { getScrollParent as a, getScrollTop as b, animatedScrollTo as c, isMobileDevice as d, isDocumentElement as e, cleanValue as f, getBoundingClientObj as g, scrollIntoView as h, isTouchCapable as i, classNames as j, handleInputChange as k, noop as n, scrollTo as s };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { Component } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport { g as getBoundingClientObj, a as getScrollParent, b as getScrollTop, c as animatedScrollTo, s as scrollTo } from './chunk-39d3fda8.browser.esm.js';\nimport _css from '@emotion/css';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport AutosizeInput from 'react-input-autosize';\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n scrollTo(scrollParent, scrollDown);\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n}; // NOTE: internal only\n\nvar MenuPlacer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MenuPlacer, _Component);\n\n function MenuPlacer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MenuPlacer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPlacement\", function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getUpdatedProps\", function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread({}, _this.props, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n });\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\n\n_defineProperty(MenuPlacer, \"contextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className)\n }, innerProps, {\n ref: innerRef\n }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isMulti = props.isMulti,\n innerRef = props.innerRef;\n return jsx(\"div\", {\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n function MenuPortal() {\n var _getPrototypeOf3;\n\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _possibleConstructorReturn(this, (_getPrototypeOf3 = _getPrototypeOf(MenuPortal)).call.apply(_getPrototypeOf3, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"state\", {\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"getPortalPlacement\", function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n });\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n getPortalPlacement: this.getPortalPlacement\n };\n } // callback for occassions where the menu must \"flip\"\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n controlElement = _this$props2.controlElement,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", {\n css: getStyles('menuPortal', state)\n }, children);\n return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\n_defineProperty(MenuPortal, \"childContextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // Custom handling for React\n\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n}\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\nvar ValueContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ValueContainer, _Component);\n\n function ValueContainer() {\n _classCallCheck(this, ValueContainer);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ValueContainer).apply(this, arguments));\n }\n\n _createClass(ValueContainer, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n cx = _this$props.cx,\n isMulti = _this$props.isMulti,\n getStyles = _this$props.getStyles,\n hasValue = _this$props.hasValue;\n return jsx(\"div\", {\n css: getStyles('valueContainer', this.props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, children);\n }\n }]);\n\n return ValueContainer;\n}(Component); // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n return jsx(\"div\", {\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, children);\n};\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\"\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject());\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css:\n /*#__PURE__*/\n _css({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", {\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\nvar GroupHeading = function GroupHeading(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n theme = props.theme,\n selectProps = props.selectProps,\n cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", _extends({\n css: getStyles('groupHeading', _objectSpread({\n theme: theme\n }, cleanProps)),\n className: cx({\n 'group-heading': true\n }, className)\n }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(_ref2) {\n var className = _ref2.className,\n cx = _ref2.cx,\n getStyles = _ref2.getStyles,\n innerRef = _ref2.innerRef,\n isHidden = _ref2.isHidden,\n isDisabled = _ref2.isDisabled,\n theme = _ref2.theme,\n selectProps = _ref2.selectProps,\n props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', _objectSpread({\n theme: theme\n }, props))\n }, jsx(AutosizeInput, _extends({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nvar MultiValueRemove =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MultiValueRemove, _Component);\n\n function MultiValueRemove() {\n _classCallCheck(this, MultiValueRemove);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValueRemove).apply(this, arguments));\n }\n\n _createClass(MultiValueRemove, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n innerProps = _this$props.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n }\n }]);\n\n return MultiValueRemove;\n}(Component);\n\nvar MultiValue =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MultiValue, _Component2);\n\n function MultiValue() {\n _classCallCheck(this, MultiValue);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValue).apply(this, arguments));\n }\n\n _createClass(MultiValue, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n components = _this$props2.components,\n cx = _this$props2.cx,\n data = _this$props2.data,\n getStyles = _this$props2.getStyles,\n innerProps = _this$props2.innerProps,\n isDisabled = _this$props2.isDisabled,\n removeProps = _this$props2.removeProps,\n selectProps = _this$props2.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref5) {\n var css = _ref5.css,\n emotionCx = _ref5.cx;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread({}, innerProps, {\n className: emotionCx(css(getStyles('multiValue', _this.props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', _this.props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread({\n className: emotionCx(css(getStyles('multiValueRemove', _this.props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n }\n }]);\n\n return MultiValue;\n}(Component);\n\n_defineProperty(MultiValue, \"defaultProps\", {\n cropWithEllipsis: true\n});\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread({}, components, props.components);\n};\n\nexport { MenuPlacer as M, containerCSS as a, css as b, clearIndicatorCSS as c, dropdownIndicatorCSS as d, groupHeadingCSS as e, indicatorSeparatorCSS as f, groupCSS as g, inputCSS as h, indicatorsContainerCSS as i, loadingMessageCSS as j, menuListCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, defaultComponents as w, exportedEqual as x, components as y };\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { i as isTouchCapable, d as isMobileDevice, e as isDocumentElement, f as cleanValue, h as scrollIntoView, j as classNames, n as noop } from '../../chunk-39d3fda8.browser.esm.js';\nimport { c as clearIndicatorCSS, a as containerCSS, b as css, d as dropdownIndicatorCSS, g as groupCSS, e as groupHeadingCSS, i as indicatorsContainerCSS, f as indicatorSeparatorCSS, h as inputCSS, l as loadingIndicatorCSS, j as loadingMessageCSS, m as menuCSS, k as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, w as defaultComponents, x as exportedEqual, M as MenuPlacer } from '../../chunk-80640036.browser.esm.js';\nimport _css from '@emotion/css';\n\nvar diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n}, {\n base: 'AA',\n letters: /[\\uA732]/g\n}, {\n base: 'AE',\n letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n base: 'AO',\n letters: /[\\uA734]/g\n}, {\n base: 'AU',\n letters: /[\\uA736]/g\n}, {\n base: 'AV',\n letters: /[\\uA738\\uA73A]/g\n}, {\n base: 'AY',\n letters: /[\\uA73C]/g\n}, {\n base: 'B',\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n base: 'C',\n letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n base: 'D',\n letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n base: 'DZ',\n letters: /[\\u01F1\\u01C4]/g\n}, {\n base: 'Dz',\n letters: /[\\u01F2\\u01C5]/g\n}, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n}, {\n base: 'F',\n letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n base: 'G',\n letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n base: 'H',\n letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n base: 'J',\n letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n base: 'K',\n letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n base: 'LJ',\n letters: /[\\u01C7]/g\n}, {\n base: 'Lj',\n letters: /[\\u01C8]/g\n}, {\n base: 'M',\n letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n base: 'NJ',\n letters: /[\\u01CA]/g\n}, {\n base: 'Nj',\n letters: /[\\u01CB]/g\n}, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n}, {\n base: 'OI',\n letters: /[\\u01A2]/g\n}, {\n base: 'OO',\n letters: /[\\uA74E]/g\n}, {\n base: 'OU',\n letters: /[\\u0222]/g\n}, {\n base: 'P',\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n base: 'Q',\n letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n base: 'T',\n letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n base: 'TZ',\n letters: /[\\uA728]/g\n}, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n}, {\n base: 'V',\n letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n base: 'VY',\n letters: /[\\uA760]/g\n}, {\n base: 'W',\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n base: 'X',\n letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n base: 'Y',\n letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n base: 'Z',\n letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n}, {\n base: 'aa',\n letters: /[\\uA733]/g\n}, {\n base: 'ae',\n letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n base: 'ao',\n letters: /[\\uA735]/g\n}, {\n base: 'au',\n letters: /[\\uA737]/g\n}, {\n base: 'av',\n letters: /[\\uA739\\uA73B]/g\n}, {\n base: 'ay',\n letters: /[\\uA73D]/g\n}, {\n base: 'b',\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n base: 'c',\n letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n base: 'd',\n letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n base: 'dz',\n letters: /[\\u01F3\\u01C6]/g\n}, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n}, {\n base: 'f',\n letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n base: 'g',\n letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n base: 'h',\n letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n base: 'hv',\n letters: /[\\u0195]/g\n}, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n base: 'j',\n letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n base: 'k',\n letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n base: 'lj',\n letters: /[\\u01C9]/g\n}, {\n base: 'm',\n letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n base: 'nj',\n letters: /[\\u01CC]/g\n}, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n}, {\n base: 'oi',\n letters: /[\\u01A3]/g\n}, {\n base: 'ou',\n letters: /[\\u0223]/g\n}, {\n base: 'oo',\n letters: /[\\uA74F]/g\n}, {\n base: 'p',\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n base: 'q',\n letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n base: 'tz',\n letters: /[\\uA729]/g\n}, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n}, {\n base: 'v',\n letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n base: 'vy',\n letters: /[\\uA761]/g\n}, {\n base: 'w',\n letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n base: 'x',\n letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n base: 'z',\n letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\nvar stripDiacritics = function stripDiacritics(str) {\n for (var i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n\n return str;\n};\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = stripDiacritics(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFNIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICAgIDxzcGFuXG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\"\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\n\nvar DummyInput =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DummyInput, _Component);\n\n function DummyInput() {\n _classCallCheck(this, DummyInput);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DummyInput).apply(this, arguments));\n }\n\n _createClass(DummyInput, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n inProp = _this$props.in,\n out = _this$props.out,\n onExited = _this$props.onExited,\n appear = _this$props.appear,\n enter = _this$props.enter,\n exit = _this$props.exit,\n innerRef = _this$props.innerRef,\n emotion = _this$props.emotion,\n props = _objectWithoutProperties(_this$props, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends({\n ref: innerRef\n }, props, {\n css:\n /*#__PURE__*/\n _css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWVEiLCJmaWxlIjoiRHVtbXlJbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdW1teUlucHV0IGV4dGVuZHMgQ29tcG9uZW50PGFueT4ge1xuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHsgaW46IGluUHJvcCwgb3V0LCBvbkV4aXRlZCwgYXBwZWFyLCBlbnRlciwgZXhpdCwgaW5uZXJSZWYsIGVtb3Rpb24sIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybihcbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl19 */\")\n }));\n }\n }]);\n\n return DummyInput;\n}(Component);\n\nvar NodeResolver =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NodeResolver, _Component);\n\n function NodeResolver() {\n _classCallCheck(this, NodeResolver);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NodeResolver).apply(this, arguments));\n }\n\n _createClass(NodeResolver, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.innerRef(findDOMNode(this));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.props.innerRef(null);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollLock, _Component);\n\n function ScrollLock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollLock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollLock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"originalStyles\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"listenerOptions\", {\n capture: false,\n passive: false\n });\n\n return _this;\n }\n\n _createClass(ScrollLock, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!canUseDOM) return;\n var _this$props = this.props,\n accountForScrollbars = _this$props.accountForScrollbars,\n touchScrollTarget = _this$props.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n _this2.originalStyles[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (!canUseDOM) return;\n var _this$props2 = this.props,\n accountForScrollbars = _this$props2.accountForScrollbars,\n touchScrollTarget = _this$props2.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = _this3.originalStyles[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return ScrollLock;\n}(Component);\n\n_defineProperty(ScrollLock, \"defaultProps\", {\n accountForScrollbars: true\n});\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\"\n};\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ScrollBlock, _PureComponent);\n\n function ScrollBlock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollBlock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollBlock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n touchScrollTarget: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n if (ref === _this.state.touchScrollTarget) return;\n\n _this.setState({\n touchScrollTarget: ref\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blurSelectInput\", function () {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n });\n\n return _this;\n }\n\n _createClass(ScrollBlock, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n isEnabled = _this$props.isEnabled;\n var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n if (!isEnabled) return children;\n /*\n * Div\n * ------------------------------\n * blocks scrolling on non-body elements behind the menu\n * NodeResolver\n * ------------------------------\n * we need a reference to the scrollable element to \"unlock\" scroll on\n * mobile devices\n * ScrollLock\n * ------------------------------\n * actually does the scroll locking\n */\n\n return jsx(\"div\", null, jsx(\"div\", {\n onClick: this.blurSelectInput,\n css: _ref$1\n }), jsx(NodeResolver, {\n innerRef: this.getScrollTarget\n }, children), touchScrollTarget ? jsx(ScrollLock, {\n touchScrollTarget: touchScrollTarget\n }) : null);\n }\n }]);\n\n return ScrollBlock;\n}(PureComponent);\n\nvar ScrollCaptor =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollCaptor, _Component);\n\n function ScrollCaptor() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollCaptor);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollCaptor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isBottom\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isTop\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollTarget\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"touchStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancelScroll\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEventDelta\", function (event, delta) {\n var _this$props = _this.props,\n onBottomArrive = _this$props.onBottomArrive,\n onBottomLeave = _this$props.onBottomLeave,\n onTopArrive = _this$props.onTopArrive,\n onTopLeave = _this$props.onTopLeave;\n var _this$scrollTarget = _this.scrollTarget,\n scrollTop = _this$scrollTarget.scrollTop,\n scrollHeight = _this$scrollTarget.scrollHeight,\n clientHeight = _this$scrollTarget.clientHeight;\n var target = _this.scrollTarget;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && _this.isBottom) {\n if (onBottomLeave) onBottomLeave(event);\n _this.isBottom = false;\n }\n\n if (isDeltaPositive && _this.isTop) {\n if (onTopLeave) onTopLeave(event);\n _this.isTop = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !_this.isBottom) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n _this.isBottom = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !_this.isTop) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n _this.isTop = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n _this.cancelScroll(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWheel\", function (event) {\n _this.handleEventDelta(event, event.deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (event) {\n // set touch start so we can calculate touchmove delta\n _this.touchStart = event.changedTouches[0].clientY;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (event) {\n var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n _this.handleEventDelta(event, deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n _this.scrollTarget = ref;\n });\n\n return _this;\n }\n\n _createClass(ScrollCaptor, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListening(this.scrollTarget);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListening(this.scrollTarget);\n }\n }, {\n key: \"startListening\",\n value: function startListening(el) {\n // bail early if no element is available to attach to\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"stopListening\",\n value: function stopListening(el) {\n // all the if statements are to appease Flow 😢\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(NodeResolver, {\n innerRef: this.getScrollTarget\n }, this.props.children);\n }\n }]);\n\n return ScrollCaptor;\n}(Component);\n\nvar ScrollCaptorSwitch =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(ScrollCaptorSwitch, _Component2);\n\n function ScrollCaptorSwitch() {\n _classCallCheck(this, ScrollCaptorSwitch);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ScrollCaptorSwitch).apply(this, arguments));\n }\n\n _createClass(ScrollCaptorSwitch, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n isEnabled = _this$props2.isEnabled,\n props = _objectWithoutProperties(_this$props2, [\"isEnabled\"]);\n\n return isEnabled ? React.createElement(ScrollCaptor, props) : this.props.children;\n }\n }]);\n\n return ScrollCaptorSwitch;\n}(Component);\n\n_defineProperty(ScrollCaptorSwitch, \"defaultProps\", {\n isEnabled: true\n});\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isSearchable = context.isSearchable,\n isMulti = context.isMulti,\n label = context.label,\n isDisabled = context.isDisabled;\n\n switch (event) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu, press Tab to select the option and exit the menu.\");\n\n case 'input':\n return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value,\n isDisabled = context.isDisabled;\n if (!value) return;\n\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(value, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n var focusedValue = _ref.focusedValue,\n getOptionLabel = _ref.getOptionLabel,\n selectValue = _ref.selectValue;\n return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$1,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _objectSpread({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Select, _Component);\n\n // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Select).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n menuOptions: {\n render: [],\n focusable: []\n },\n selectValue: []\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blockOptionHover\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isComposing\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearFocusValueOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"commonProps\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"components\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hasGroups\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchX\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchY\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputIsHiddenAfterUpdate\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"instancePrefix\", '');\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"openAfterFocus\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollToFocusedOptionOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"userIsDragging\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"controlRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getControlRef\", function (ref) {\n _this.controlRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focusedOptionRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getFocusedOptionRef\", function (ref) {\n _this.focusedOptionRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"menuListRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMenuListRef\", function (ref) {\n _this.menuListRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getInputRef\", function (ref) {\n _this.inputRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cacheComponents\", function (components) {\n _this.components = defaultComponents({\n components: components\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focus\", _this.focusInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blur\", _this.blurInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n onChange(newValue, _objectSpread({}, actionMeta, {\n name: name\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setValue\", function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.clearFocusValueOnUpdate = true;\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"selectOption\", function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti;\n var selectValue = _this.state.selectValue;\n\n if (isMulti) {\n if (_this.isOptionSelected(newValue, selectValue)) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'deselect-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue(newValue, 'select-option');\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"removeValue\", function (removedValue) {\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValue = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this.getOptionLabel(removedValue) : ''\n }\n });\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearValue\", function () {\n var isMulti = _this.props.isMulti;\n\n _this.onChange(isMulti ? [] : null, {\n action: 'clear'\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popValue\", function () {\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValue = selectValue.slice(0, selectValue.length - 1);\n\n _this.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n }\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionLabel\", function (data) {\n return _this.props.getOptionLabel(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionValue\", function (data) {\n return _this.props.getOptionValue(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyles\", function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getElementId\", function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getActiveDescendentId\", function () {\n var menuIsOpen = _this.props.menuIsOpen;\n var _this$state = _this.state,\n menuOptions = _this$state.menuOptions,\n focusedOption = _this$state.focusedOption;\n if (!focusedOption || !menuIsOpen) return undefined;\n var index = menuOptions.focusable.indexOf(focusedOption);\n var option = menuOptions.render[index];\n return option && option.key;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveSelection\", function (_ref2) {\n var event = _ref2.event,\n context = _ref2.context;\n\n _this.setState({\n ariaLiveSelection: valueEventAriaMessage(event, context)\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveContext\", function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this.setState({\n ariaLiveContext: instructionsAriaMessage(event, _objectSpread({}, context, {\n label: _this.props['aria-label']\n }))\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseDown\", function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseMove\", function (event) {\n _this.blockOptionHover = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlMouseDown\", function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n //$FlowFixMe\n if (event.target.tagName !== 'INPUT') {\n _this.onMenuClose();\n }\n } //$FlowFixMe\n\n\n if (event.target.tagName !== 'INPUT') {\n event.preventDefault();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onScroll\", function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionStart\", function () {\n _this.isComposing = true;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionEnd\", function () {\n _this.isComposing = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (_ref4) {\n var touches = _ref4.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (_ref5) {\n var touches = _ref5.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchEnd\", function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var inputValue = event.currentTarget.value;\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n _this.onMenuOpen();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputFocus\", function (event) {\n var _this$props5 = _this.props,\n isSearchable = _this$props5.isSearchable,\n isMulti = _this$props5.isMulti;\n\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n\n _this.setState({\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputBlur\", function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onOptionHover\", function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"shouldHideSelectedOptions\", function () {\n var _this$props6 = _this.props,\n hideSelectedOptions = _this$props6.hideSelectedOptions,\n isMulti = _this$props6.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n var _this$props7 = _this.props,\n isMulti = _this$props7.isMulti,\n backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n escapeClearsValue = _this$props7.escapeClearsValue,\n inputValue = _this$props7.inputValue,\n isClearable = _this$props7.isClearable,\n isDisabled = _this$props7.isDisabled,\n menuIsOpen = _this$props7.menuIsOpen,\n onKeyDown = _this$props7.onKeyDown,\n tabSelectsValue = _this$props7.tabSelectsValue,\n openMenuOnFocus = _this$props7.openMenuOnFocus;\n var _this$state2 = _this.state,\n focusedOption = _this$state2.focusedOption,\n focusedValue = _this$state2.focusedValue,\n selectValue = _this$state2.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n });\n\n var value = _props.value;\n _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.cacheComponents(_props.components);\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n var _selectValue = cleanValue(value);\n\n var _menuOptions = _props.menuIsOpen ? _this.buildMenuOptions(_props, _selectValue) : {\n render: [],\n focusable: []\n };\n\n _this.state.menuOptions = _menuOptions;\n _this.state.selectValue = _selectValue;\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props8 = this.props,\n options = _this$props8.options,\n value = _this$props8.value,\n menuIsOpen = _this$props8.menuIsOpen,\n inputValue = _this$props8.inputValue; // re-cache custom components\n\n this.cacheComponents(nextProps.components); // rebuild the menu options\n\n if (nextProps.value !== value || nextProps.options !== options || nextProps.menuIsOpen !== menuIsOpen || nextProps.inputValue !== inputValue) {\n var selectValue = cleanValue(nextProps.value);\n var menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : {\n render: [],\n focusable: []\n };\n var focusedValue = this.getNextFocusedValue(selectValue);\n var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n this.setState({\n menuOptions: menuOptions,\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue\n });\n } // some updates should toggle the state of the input visibility\n\n\n if (this.inputIsHiddenAfterUpdate != null) {\n this.setState({\n inputIsHidden: this.inputIsHiddenAfterUpdate\n });\n delete this.inputIsHiddenAfterUpdate;\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n isDisabled = _this$props9.isDisabled,\n menuIsOpen = _this$props9.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n }\n\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }\n }, {\n key: \"onMenuOpen\",\n // ==============================\n // Consumer Handlers\n // ==============================\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n var _this$props10 = this.props,\n isSearchable = _this$props10.isSearchable,\n isMulti = _this$props10.isMulti;\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this$state3 = this.state,\n menuOptions = _this$state3.menuOptions,\n selectValue = _this$state3.selectValue,\n isFocused = _this$state3.isFocused;\n var isMulti = this.props.isMulti;\n var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n if (!isMulti) {\n var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.inputIsHiddenAfterUpdate = false;\n this.onMenuOpen();\n this.setState({\n focusedValue: null,\n focusedOption: menuOptions.focusable[openAtIndex]\n });\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$props11 = this.props,\n isMulti = _this$props11.isMulti,\n isSearchable = _this$props11.isSearchable;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n if (!isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'value'\n });\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var _this$state5 = this.state,\n focusedOption = _this$state5.focusedOption,\n menuOptions = _this$state5.menuOptions;\n var options = menuOptions.focusable;\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n isDisabled: isOptionDisabled(options[nextFocus])\n }\n });\n }\n }, {\n key: \"getTheme\",\n // ==============================\n // Getters\n // ==============================\n value: function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread({}, defaultTheme, this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n getStyles = this.getStyles,\n setValue = this.setValue,\n selectOption = this.selectOption,\n props = this.props;\n var classNamePrefix = props.classNamePrefix,\n isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var selectValue = this.state.selectValue;\n var hasValue = this.hasValue();\n\n var getValue = function getValue() {\n return selectValue;\n };\n\n var cx = classNames.bind(null, classNamePrefix);\n return {\n cx: cx,\n clearValue: clearValue,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n setValue: setValue,\n selectProps: props,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"getNextFocusedValue\",\n value: function getNextFocusedValue(nextSelectValue) {\n if (this.clearFocusValueOnUpdate) {\n this.clearFocusValueOnUpdate = false;\n return null;\n }\n\n var _this$state6 = this.state,\n focusedValue = _this$state6.focusedValue,\n lastSelectValue = _this$state6.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n }\n }, {\n key: \"getNextFocusedOption\",\n value: function getNextFocusedOption(options) {\n var lastFocusedOption = this.state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.state.menuOptions.render.length;\n }\n }, {\n key: \"countOptions\",\n value: function countOptions() {\n return this.state.menuOptions.focusable.length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props12 = this.props,\n isClearable = _this$props12.isClearable,\n isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n var _this2 = this;\n\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof this.props.isOptionSelected === 'function') {\n return this.props.isOptionSelected(option, selectValue);\n }\n\n var candidate = this.getOptionValue(option);\n return selectValue.some(function (i) {\n return _this2.getOptionValue(i) === candidate;\n });\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n // ==============================\n // Composition Handlers\n // ==============================\n value: function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n // ==============================\n // Touch Handlers\n // ==============================\n value: function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"buildMenuOptions\",\n // ==============================\n // Menu Options\n // ==============================\n value: function buildMenuOptions(props, selectValue) {\n var _this3 = this;\n\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n options = props.options;\n\n var toOption = function toOption(option, id) {\n var isDisabled = _this3.isOptionDisabled(option, selectValue);\n\n var isSelected = _this3.isOptionSelected(option, selectValue);\n\n var label = _this3.getOptionLabel(option);\n\n var value = _this3.getOptionValue(option);\n\n if (_this3.shouldHideSelectedOptions() && isSelected || !_this3.filterOption({\n label: label,\n value: value,\n data: option\n }, inputValue)) {\n return;\n }\n\n var onHover = isDisabled ? undefined : function () {\n return _this3.onOptionHover(option);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this3.selectOption(option);\n };\n var optionId = \"\".concat(_this3.getElementId('option'), \"-\").concat(id);\n return {\n innerProps: {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n },\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: 'option',\n value: value\n };\n };\n\n return options.reduce(function (acc, item, itemIndex) {\n if (item.options) {\n // TODO needs a tidier implementation\n if (!_this3.hasGroups) _this3.hasGroups = true;\n var items = item.options;\n var children = items.map(function (child, i) {\n var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n if (option) acc.focusable.push(child);\n return option;\n }).filter(Boolean);\n\n if (children.length) {\n var groupId = \"\".concat(_this3.getElementId('group'), \"-\").concat(itemIndex);\n acc.render.push({\n type: 'group',\n key: groupId,\n data: item,\n options: children\n });\n }\n } else {\n var option = toOption(item, \"\".concat(itemIndex));\n\n if (option) {\n acc.render.push(option);\n acc.focusable.push(item);\n }\n }\n\n return acc;\n }, {\n render: [],\n focusable: []\n });\n } // ==============================\n // Renderers\n // ==============================\n\n }, {\n key: \"constructAriaLiveMessage\",\n value: function constructAriaLiveMessage() {\n var _this$state7 = this.state,\n ariaLiveContext = _this$state7.ariaLiveContext,\n selectValue = _this$state7.selectValue,\n focusedValue = _this$state7.focusedValue,\n focusedOption = _this$state7.focusedOption;\n var _this$props13 = this.props,\n options = _this$props13.options,\n menuIsOpen = _this$props13.menuIsOpen,\n inputValue = _this$props13.inputValue,\n screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : ''; // An aria live message representing the currently focused option in the select.\n\n var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n var resultsMsg = resultsAriaMessage({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({\n count: this.countOptions()\n })\n });\n return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n }\n }, {\n key: \"renderInput\",\n value: function renderInput() {\n var _this$props14 = this.props,\n isDisabled = _this$props14.isDisabled,\n isSearchable = _this$props14.isSearchable,\n inputId = _this$props14.inputId,\n inputValue = _this$props14.inputValue,\n tabIndex = _this$props14.tabIndex;\n var Input = this.components.Input;\n var inputIsHidden = this.state.inputIsHidden;\n var id = inputId || this.getElementId('input');\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return React.createElement(DummyInput, {\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n value: \"\"\n });\n } // aria attributes makes the JSX \"noisy\", separated for clarity\n\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n var _this$commonProps = this.commonProps,\n cx = _this$commonProps.cx,\n theme = _this$commonProps.theme,\n selectProps = _this$commonProps.selectProps;\n return React.createElement(Input, _extends({\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n cx: cx,\n getStyles: this.getStyles,\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n selectProps: selectProps,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n theme: theme,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this4 = this;\n\n var _this$components = this.components,\n MultiValue = _this$components.MultiValue,\n MultiValueContainer = _this$components.MultiValueContainer,\n MultiValueLabel = _this$components.MultiValueLabel,\n MultiValueRemove = _this$components.MultiValueRemove,\n SingleValue = _this$components.SingleValue,\n Placeholder = _this$components.Placeholder;\n var commonProps = this.commonProps;\n var _this$props15 = this.props,\n controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n isDisabled = _this$props15.isDisabled,\n isMulti = _this$props15.isMulti,\n inputValue = _this$props15.inputValue,\n placeholder = _this$props15.placeholder;\n var _this$state8 = this.state,\n selectValue = _this$state8.selectValue,\n focusedValue = _this$state8.focusedValue,\n isFocused = _this$state8.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n return React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: _this4.getOptionValue(opt),\n index: index,\n removeProps: {\n onClick: function onClick() {\n return _this4.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this4.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this4.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var ClearIndicator = this.components.ClearIndicator;\n var commonProps = this.commonProps;\n var _this$props16 = this.props,\n isDisabled = _this$props16.isDisabled,\n isLoading = _this$props16.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var LoadingIndicator = this.components.LoadingIndicator;\n var commonProps = this.commonProps;\n var _this$props17 = this.props,\n isDisabled = _this$props17.isDisabled,\n isLoading = _this$props17.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$components2 = this.components,\n DropdownIndicator = _this$components2.DropdownIndicator,\n IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var DropdownIndicator = this.components.DropdownIndicator;\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this5 = this;\n\n var _this$components3 = this.components,\n Group = _this$components3.Group,\n GroupHeading = _this$components3.GroupHeading,\n Menu = _this$components3.Menu,\n MenuList = _this$components3.MenuList,\n MenuPortal = _this$components3.MenuPortal,\n LoadingMessage = _this$components3.LoadingMessage,\n NoOptionsMessage = _this$components3.NoOptionsMessage,\n Option = _this$components3.Option;\n var commonProps = this.commonProps;\n var _this$state9 = this.state,\n focusedOption = _this$state9.focusedOption,\n menuOptions = _this$state9.menuOptions;\n var _this$props18 = this.props,\n captureMenuScroll = _this$props18.captureMenuScroll,\n inputValue = _this$props18.inputValue,\n isLoading = _this$props18.isLoading,\n loadingMessage = _this$props18.loadingMessage,\n minMenuHeight = _this$props18.minMenuHeight,\n maxMenuHeight = _this$props18.maxMenuHeight,\n menuIsOpen = _this$props18.menuIsOpen,\n menuPlacement = _this$props18.menuPlacement,\n menuPosition = _this$props18.menuPosition,\n menuPortalTarget = _this$props18.menuPortalTarget,\n menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n noOptionsMessage = _this$props18.noOptionsMessage,\n onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props) {\n // for performance, the menu options in state aren't changed when the\n // focused option changes so we calculate additional props based on that\n var isFocused = focusedOption === props.data;\n props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n return React.createElement(Option, _extends({}, commonProps, props, {\n isFocused: isFocused\n }), _this5.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = menuOptions.render.map(function (item) {\n if (item.type === 'group') {\n var type = item.type,\n group = _objectWithoutProperties(item, [\"type\"]);\n\n var headingId = \"\".concat(item.key, \"-heading\");\n return React.createElement(Group, _extends({}, commonProps, group, {\n Heading: GroupHeading,\n headingProps: {\n id: headingId\n },\n label: _this5.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option);\n }));\n } else if (item.type === 'option') {\n return render(item);\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref6) {\n var ref = _ref6.ref,\n _ref6$placerProps = _ref6.placerProps,\n placement = _ref6$placerProps.placement,\n maxHeight = _ref6$placerProps.maxHeight;\n return React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this5.onMenuMouseDown,\n onMouseMove: _this5.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), React.createElement(ScrollCaptorSwitch, {\n isEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom\n }, React.createElement(ScrollBlock, {\n isEnabled: menuShouldBlockScroll\n }, React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: _this5.getMenuListRef,\n isLoading: isLoading,\n maxHeight: maxHeight\n }), menuUI))));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this6 = this;\n\n var _this$props19 = this.props,\n delimiter = _this$props19.delimiter,\n isDisabled = _this$props19.isDisabled,\n isMulti = _this$props19.isMulti,\n name = _this$props19.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this6.getOptionValue(opt);\n }).join(delimiter);\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this6.getOptionValue(opt)\n });\n }) : React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return React.createElement(A11yText, {\n \"aria-live\": \"polite\"\n }, React.createElement(\"p\", {\n id: \"aria-selection-event\"\n }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n id: \"aria-context\"\n }, \"\\xA0\", this.constructAriaLiveMessage()));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$components4 = this.components,\n Control = _this$components4.Control,\n IndicatorsContainer = _this$components4.IndicatorsContainer,\n SelectContainer = _this$components4.SelectContainer,\n ValueContainer = _this$components4.ValueContainer;\n var _this$props20 = this.props,\n className = _this$props20.className,\n id = _this$props20.id,\n isDisabled = _this$props20.isDisabled,\n menuIsOpen = _this$props20.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }]);\n\n return Select;\n}(Component);\n\n_defineProperty(Select, \"defaultProps\", defaultProps);\n\nexport { Select as S, defaultTheme as a, createFilter as c, defaultProps as d, mergeStyles as m };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\n\nvar defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(StateManager, _Component);\n\n function StateManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, StateManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StateManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputChange\", function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuOpen\", function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuClose\", function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n });\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n defaultInputValue = _this$props2.defaultInputValue,\n defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n defaultValue = _this$props2.defaultValue,\n props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps), _temp;\n};\n\nexport { manageState as m };\n","import '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/esm/toConsumableArray';\nimport '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CacheProvider } from '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport '@babel/runtime/helpers/esm/typeof';\nimport './chunk-39d3fda8.browser.esm.js';\nexport { y as components } from './chunk-80640036.browser.esm.js';\nimport { S as Select } from './base/dist/react-select-cac0a5ae.browser.esm.js';\nexport { c as createFilter, a as defaultTheme, m as mergeStyles } from './base/dist/react-select-cac0a5ae.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport { m as manageState } from './chunk-b36baf1a.browser.esm.js';\nimport createCache from '@emotion/cache';\n\nvar NonceProvider =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NonceProvider, _Component);\n\n function NonceProvider(props) {\n var _this;\n\n _classCallCheck(this, NonceProvider);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NonceProvider).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"createEmotionCache\", function (nonce) {\n return createCache({\n nonce: nonce\n });\n });\n\n _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n return _this;\n }\n\n _createClass(NonceProvider, [{\n key: \"render\",\n value: function render() {\n var emotionCache = this.createEmotionCache(this.props.nonce);\n return React.createElement(CacheProvider, {\n value: emotionCache\n }, this.props.children);\n }\n }]);\n\n return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","let arrayBuffer = null;\n\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\n\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n\n/*\n\n// Creates a new Uint8Array based on two different ArrayBuffers\n// @private\n// @param {ArrayBuffers} buffer1 The first buffer.\n// @param {ArrayBuffers} buffer2 The second buffer.\n// @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n//\nexport function copyArrayBuffer(\n targetBuffer, sourceBuffer, byteOffset, byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n*/\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport {window} from './globals';\nimport isBrowser from './is-browser';\nimport isElectron from './is-electron';\n\nexport function isMobile() {\n return typeof window.orientation !== 'undefined';\n}\n\n// Simple browser detection\n// `mockUserAgent` parameter allows user agent to be overridden for testing\n/* eslint-disable complexity */\nexport default function getBrowser(mockUserAgent) {\n if (!mockUserAgent && !isBrowser()) {\n return 'Node';\n }\n\n if (isElectron(mockUserAgent)) {\n return 'Electron';\n }\n\n /* global navigator */\n const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n const userAgent = mockUserAgent || navigator_.userAgent || '';\n // const appVersion = navigator_.appVersion || '';\n\n // NOTE: Order of tests matter, as many agents list Chrome etc.\n if (userAgent.indexOf('Edge') > -1) {\n return 'Edge';\n }\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n if (isMSIE || isTrident) {\n return 'IE';\n }\n if (window.chrome) {\n return 'Chrome';\n }\n if (window.safari) {\n return 'Safari';\n }\n if (window.mozInnerScreenX) {\n return 'Firefox';\n }\n return 'Unknown';\n}\n","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {getScratchArray, fillArray} from '../utils/array-utils-flat';\nimport {assert} from '../utils';\nimport {getBrowser} from 'probe.gl';\n\n/* eslint-disable camelcase */\nconst OES_vertex_array_object = 'OES_vertex_array_object';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\nexport default class VertexArrayObject extends Resource {\n static isSupported(gl, options = {}) {\n // Attribute 0 can not be disable on most desktop OpenGL based browsers\n // and on iOS Safari browser.\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return isWebGL2(gl) || gl.getExtension(OES_vertex_array_object);\n }\n\n // Returns the global (null) vertex array object. Exists even when no extension available\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n }\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n // TODO - should be cached per context\n VertexArrayObject.MAX_ATTRIBUTES =\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n // Note: Constants are stored globally on the WebGL context, not the VAO\n // So they need to be updated before every render\n // TODO - use known type (in configuration or passed in) to allow non-typed arrays?\n // TODO - remember/cache values to avoid setting them unnecessarily?\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // Create a VertexArray\n constructor(gl, opts = {}) {\n // Use program's id if program but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n super(gl, Object.assign({}, opts, {id}));\n\n this.hasVertexArrays = VertexArrayObject.isSupported(gl);\n this.buffer = null;\n this.bufferValue = null;\n // this.isDefaultArray = opts.isDefaultArray || false;\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize(props = {}) {\n return this.setProps(props);\n }\n\n setProps(props) {\n // TODO: decide which props should be supported\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor\n setBuffer(location, buffer, accessor) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n // Enabling an attribute location makes it reference the currently bound buffer\n // Disabling an attribute location makes it reference the global constant value\n // TODO - handle single values for size 1 attributes?\n // TODO - convert classic arrays based on known type?\n enable(location, enable = true) {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(\n () =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n // Provide a means to create a buffer that is equivalent to a constant.\n // NOTE: Desktop OpenGL cannot disable attribute 0.\n // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n // this-has-significant-performance-penalt\n getConstantBuffer(elementCount, value, accessor) {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value, accessor);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue, accessor) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n this.hasVertexArrays = VertexArrayObject.isSupported(this.gl);\n if (this.hasVertexArrays) {\n return this.gl.createVertexArray();\n }\n return null;\n }\n\n _deleteHandle(handle) {\n if (this.hasVertexArrays) {\n this.gl.deleteVertexArray(handle);\n }\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle) {\n if (this.hasVertexArrays) {\n this.gl.bindVertexArray(handle);\n }\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n\n // DEPRECATED\n\n /*\n setDivisor(location, divisor) {\n location = Number(location);\n this.bind(() => this.gl.vertexAttribDivisor(location, divisor));\n return this;\n }\n\n // match assumed WebGL defaults\n static resetConstants(gl) {\n const MAX_ATTRIBUTES = VertexArrayObject.getMaxAttributes(gl);\n for (let i = 0; i < MAX_ATTRIBUTES; i++) {\n VertexArrayObject.setConstant(gl, i, [0, 0, 0, 1]);\n }\n }\n\n // Resets all attributes (to default valued constants)\n resetAttributes() {\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // But Chrome does not like buffers that are bound to several binding points.\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {size: 4});\n\n for (const location in this.values) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n\n this.setElementBuffer(null);\n return this;\n }\n */\n}\n","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert, stubRemovedMethods} from '../utils';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = VertexArrayObject.isSupported(gl)\n ? new VertexArrayObject(gl)\n : VertexArrayObject.getDefaultArray(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n\n // Update vertexArray immediately if we have our own array\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n }\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // Update vertexArray immediately if we have our own array\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue, accessor);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // Update vertexArray immediately if we have our own array\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.enable(location, false);\n }\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n // Update vertexArray immediately if we have our own array\n if (!this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n if (!this.vertexArrayObject.hasVertexArrays) {\n this.bindBuffers();\n }\n\n value = func();\n\n if (!this.vertexArrayObject.hasVertexArrays) {\n this.unbindBuffers();\n }\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return this;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return {\n location: -1,\n accessor: null\n };\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n\n // If we are using the global VertexArrayObject, we need to disable the attribute now\n if (this.vertexArrayObject.isDefaultArray) {\n this.vertexArrayObject.enable(location, false);\n }\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n","// TODO / DEPRECATED - delete when confident that probe.gl logging implements all opts\n/* eslint-disable no-console */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n","import Buffer from '../classes/buffer';\nimport {getKey} from '../webgl-utils';\nimport {getCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {formatValue} from '../utils';\n\n// Creates object suitable as input for console.table\nexport function getDebugTableForVertexArray({vertexArray, header = 'Attributes'} = {}) {\n if (!vertexArray.configuration) {\n return {};\n }\n\n const table = {}; // {[header]: {}};\n\n // Add index (elements) if available\n if (vertexArray.elements) {\n // const elements = Object.assign({size: 1}, vertexArray.elements);\n table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n }\n\n // Add used attributes\n const attributes = vertexArray.values;\n\n for (const attributeLocation in attributes) {\n const info = vertexArray._getAttributeInfo(attributeLocation);\n if (info) {\n let rowHeader = `${attributeLocation}: ${info.name}`;\n const accessor = vertexArray.accessors[info.location];\n if (accessor) {\n rowHeader = `${attributeLocation}: ${getGLSLDeclaration(info.name, accessor)}`;\n }\n table[rowHeader] = getDebugTableRow(\n vertexArray,\n attributes[attributeLocation],\n accessor,\n header\n );\n }\n }\n\n return table;\n}\n\n/* eslint-disable max-statements */\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n const {gl} = vertexArray;\n\n if (!attribute) {\n return {\n [header]: 'null',\n 'Format ': 'N/A'\n };\n }\n\n let type = 'NOT PROVIDED';\n let size = 'N/A';\n let verts = 'N/A';\n let bytes = 'N/A';\n\n let isInteger;\n let marker;\n let value;\n\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(type).replace('Array', '');\n\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n }\n\n if (attribute instanceof Buffer) {\n const buffer = attribute;\n\n const {data, modified} = buffer.getDebugData();\n marker = modified ? '*' : '';\n\n value = data;\n bytes = buffer.byteLength;\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n\n let format;\n\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = `${instanced ? 'I ' : 'P '} ${verts} (x${size}=${bytes} bytes ${getKey(gl, type)})`;\n } else {\n // element buffer\n isInteger = true;\n format = `${bytes} bytes`;\n }\n\n return {\n [header]: `${marker}${formatValue(value, {size, isInteger})}`,\n 'Format ': format\n };\n }\n\n // CONSTANT VALUE\n value = attribute;\n size = attribute.length;\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(attribute.constructor.name).replace('Array', '');\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n\n return {\n [header]: `${formatValue(value, {size, isInteger})} (constant)`,\n 'Format ': `${size}x${type} (constant)`\n };\n}\n/* eslint-ensable max-statements */\n\nfunction getGLSLDeclaration(name, accessor) {\n const {type, size} = accessor;\n const typeAndName = getCompositeGLType(type, size);\n return typeAndName ? `${name} (${typeAndName.name})` : name;\n}\n","import {formatValue, assert} from '../utils';\n\n// Prepares a table suitable for console.table\n/* eslint-disable max-statements, complexity */\nexport function getDebugTableForUniforms({\n header = 'Uniforms',\n program,\n uniforms,\n undefinedOnly = false\n} = {}) {\n assert(program);\n\n const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix'; // TODO - Use explicit list\n\n const uniformLocations = program._uniformSetters;\n const table = {}; // {[header]: {}};\n\n // Add program's provided uniforms (in alphabetical order)\n const uniformNames = Object.keys(uniformLocations).sort();\n\n let count = 0;\n\n // First add non-underscored uniforms (assumed not coming from shader modules)\n for (const uniformName of uniformNames) {\n if (\n !uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) &&\n !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)\n ) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // add underscored uniforms (assumed from shader modules)\n for (const uniformName of uniformNames) {\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (!table[uniformName]) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // Create a table of unused uniforms\n let unusedCount = 0;\n const unusedTable = {};\n if (!undefinedOnly) {\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: `NOT USED: ${uniform}`,\n [header]: formatValue(uniform)\n };\n }\n }\n }\n\n return {table, count, unusedTable, unusedCount};\n}\n\n// Helper\nfunction addUniformToTable({table, header, uniforms, uniformName, undefinedOnly}) {\n const value = uniforms[uniformName];\n const isDefined = isUniformDefined(value);\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n // Add program's unprovided uniforms\n [header]: isDefined ? formatValue(value) : 'N/A',\n 'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n };\n return true;\n }\n return false;\n}\n\nfunction isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n","import {getCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport function getDebugTableForProgramConfiguration(config) {\n const table = {};\n\n const header = `Accessors for ${config.id}`;\n\n for (const attributeInfo of config.attributeInfos) {\n if (attributeInfo) {\n const glslDeclaration = getGLSLDeclaration(attributeInfo);\n table[`in ${glslDeclaration}`] = {[header]: JSON.stringify(attributeInfo.accessor)};\n }\n }\n\n for (const varyingInfo of config.varyingInfos) {\n if (varyingInfo) {\n const glslDeclaration = getGLSLDeclaration(varyingInfo);\n table[`out ${glslDeclaration}`] = {[header]: JSON.stringify(varyingInfo.accessor)};\n }\n }\n\n return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n const {type, size} = attributeInfo.accessor;\n const typeAndName = getCompositeGLType(type, size);\n if (typeAndName) {\n return `${typeAndName.name} ${attributeInfo.name}`;\n }\n return attributeInfo.name;\n}\n","import GL from '@luma.gl/constants';\nimport {Buffer, assert} from '@luma.gl/webgl';\n\n// Support for mapping new geometries with glTF attribute names to \"classic\" luma.gl shader names\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\n\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n // Create accessor by copying the attribute and removing `value``\n const accessor = {...attribute};\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(\n data instanceof Uint16Array || data instanceof Uint32Array,\n 'attribute array for \"indices\" must be of integer type'\n );\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new Buffer(gl, {\n data,\n target: GL.ELEMENT_ARRAY_BUFFER\n }),\n accessor\n ];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};\n return (attributeMap && attributeMap[name]) || name;\n}\n\n// Check for well known attribute names\n// eslint-disable-next-line complexity\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n default:\n }\n\n // Check for categorys\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n\n assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);\n}\n","/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.debug = props.debug || false;\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {program = null, vs, fs, modules, defines, inject, varyings, bufferMode} = props;\n\n this.programProps = {program, vs, fs, modules, defines, inject, varyings, bufferMode};\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {program, vs, fs, modules, defines, inject, varyings, bufferMode} = props;\n this.programProps = {program, vs, fs, modules, defines, inject, varyings, bufferMode};\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (this.debug) {\n logPriority = this._logDrawCallStart(2);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (this.debug) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram(shaderCache = null) {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {vs, fs, modules, inject, defines, varyings, bufferMode} = this.programProps;\n program = this.programManager.get({vs, fs, modules, inject, defines, varyings, bufferMode});\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (log.level < logLevel || Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`)();\n }\n}\n","// Transpiles shader source code to target GLSL version\n// Note: We always run transpiler even if same version e.g. 3.00 => 3.00\n// RFC: https://github.com/uber/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex ? convertVertexShaderTo300(source) : convertFragmentShaderTo300(source);\n case 100:\n return isVertex ? convertVertexShaderTo100(source) : convertFragmentShaderTo100(source);\n default:\n throw new Error(`unknown GLSL version ${targetGLSLVersion}`);\n }\n}\n\nfunction convertVertexShaderTo300(source) {\n return source\n .replace(/attribute\\s+/g, 'in ')\n .replace(/varying\\s+/g, 'out ')\n .replace(/texture2D\\(/g, 'texture(')\n .replace(/textureCube\\(+/g, 'texture(')\n .replace(/texture2DLodEXT\\(/g, 'textureLod(')\n .replace(/textureCubeLodEXT\\(/g, 'textureLod(');\n}\n\nfunction convertFragmentShaderTo300(source) {\n return source\n .replace(/varying\\s+/g, 'in ')\n .replace(/texture2D\\(/g, 'texture(')\n .replace(/textureCube\\(/g, 'texture(')\n .replace(/texture2DLodEXT\\(/g, 'textureLod(')\n .replace(/textureCubeLodEXT\\(/g, 'textureLod(');\n\n // Deal with fragColor\n // .replace(/gl_fragColor/g, 'fragColor ');\n}\n\nfunction convertVertexShaderTo100(source) {\n // /gm - treats each line as a string, so that ^ matches after newlines\n return source\n .replace(/^in\\s+/gm, 'attribute ')\n .replace(/^out\\s+/gm, 'varying ')\n .replace(/texture\\(/g, 'texture2D(');\n}\n\nfunction convertFragmentShaderTo100(source) {\n // /gm - treats each line as a string, so that ^ matches after newlines\n return source.replace(/^in\\s+/gm, 'varying ').replace(/texture\\(/g, 'texture2D(');\n\n // Deal with fragColor\n // .replace(/^out\\s+/g, 'varying ')\n}\n","const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n if (type === 'object') {\n if (!propDef) {\n return {type: 'object', value: null};\n }\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {type: 'object', value: propDef};\n }\n type = getTypeOf(propDef.value);\n return Object.assign({type}, propDef, TYPE_DEFINITIONS[type]);\n }\n return Object.assign({type, value: propDef}, TYPE_DEFINITIONS[type]);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n","import transpileShader from './transpile-shader';\nimport {assert} from '../utils';\nimport {parsePropTypes} from './filters/prop-types';\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n\nexport default class ShaderModule {\n constructor({\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n // DEPRECATED\n vertexShader,\n fragmentShader\n }) {\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n // Extracts the source code chunk for the specified shader type from the named shader module\n getModuleSource(type, targetGLSLVersion) {\n let moduleSource;\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = transpileShader(this.vs || '', targetGLSLVersion, true);\n break;\n case FRAGMENT_SHADER:\n moduleSource = transpileShader(this.fs || '', targetGLSLVersion, false);\n break;\n default:\n assert(false);\n }\n\n return `\\\n#define MODULE_${this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_')}\n${moduleSource}\\\n// END MODULE_${this.name}\n\n`;\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n // Build uniforms from the uniforms array\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n // Warn about deprecated uniforms or functions\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n\n return deprecations;\n }\n\n _defaultGetUniforms(opts = {}) {\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n\n// This utility mutates the original module\n// Keeping for backward compatibility\n// TODO - remove in v8\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n","import ShaderModule from './shader-module';\nimport {assert} from '../utils';\n\n// Instantiate shader modules and any dependencies resolve dependencies\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param {String[]} modules - Array of modules (inline modules or module names)\n * @return {String[]} - Array of modules\n */\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({modules, level: 0, moduleMap, moduleDepth});\n\n // Return a reverse sort so that dependencies come before the modules that use them\n return Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n}\n\n/**\n * Recursively checks module dpendencies to calculate dependency\n * level of each module.\n *\n * @param {String[]} modules - Array of modules\n * @param {Number} level - Current level\n * @return {result} - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nfunction getDependencyGraph({modules, level, moduleMap, moduleDepth}) {\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({modules: module.dependencies, level: level + 1, moduleMap, moduleDepth});\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(\n typeof module !== 'string',\n `Shader module use by name is deprecated. Import shader module '${module}' and use it directly.`\n );\n assert(module.name, 'shader module has no name');\n\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n","/* global window */\n// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavor of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n","import {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport {assert} from '../utils';\n/* eslint-disable max-depth, complexity */\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\n\n// Precision prologue to inject before functions are injected in shader\n// TODO - extract any existing prologue in the fragment source and move it up...\nconst FRAGMENT_SHADER_PROLOGUE = `\\\nprecision highp float;\n\n`;\n\n// Inject a list of modules\nexport function assembleShaders(gl, opts) {\n const {vs, fs} = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {source: vs, type: VERTEX_SHADER, modules})),\n fs: assembleShader(gl, Object.assign({}, opts, {source: fs, type: FRAGMENT_SHADER, modules})),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n// Pulls together complete source code for either a vertex or a fragment shader\n// adding prologues, requested module chunks, and any final injections.\nfunction assembleShader(\n gl,\n {id, source, type, modules, defines = {}, hookFunctions = [], inject = {}, prologue = true, log}\n) {\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === VERTEX_SHADER;\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the begining of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches atual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderName({id, source, type})}\n${getShaderType({type})}\n${getPlatformShaderDefines(gl)}\n${getVersionDefines(gl, glslVersion, !isVertex)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n hookFunctions = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n if (key.match(/^(v|f)s:/)) {\n if (key[3] === '#') {\n mainInjections[key] = [injection];\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n if (key.match(/^(v|f)s:#/)) {\n mainInjections[key] = mainInjections[key] || [];\n mainInjections[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource += getHookFunctions(hookFunctions[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n return assembledSource;\n}\n\n// Returns a combined `getUniforms` covering the options for all the modules,\n// the created function will pass on options to the inidividual `getUniforms`\n// function of each shader module and combine the results into one object that\n// can be passed to setUniforms.\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType({type}) {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n// Generate \"glslify-compatible\" SHADER_NAME defines\n// These are understood by the GLSL error parsing function\n// If id is provided and no SHADER_NAME constant is present in source, create one\nfunction getShaderName({id, source, type}) {\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n// Generates application defines from an object\nfunction getApplicationDefines(defines = {}) {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach(hook => {\n let opts;\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n","import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n# define TEXTURE_LOD\n#define texture2DLod texture2DLodEXT\n#define texture2DProjLod texture2DProjLodEXT\n#define texture2DProjLod texture2DProjLodEXT\n#define textureCubeLod textureCubeLodEXT\n#define texture2DGrad texture2DGradEXT\n#define texture2DProjGrad texture2DProjGradEXT\n#define texture2DProjGrad texture2DProjGradEXT\n#define textureCubeGrad textureCubeGradEXT\n#endif\n`;\n }\n return versionDefines;\n}\n","import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {};\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {vs = '', fs = '', defines = {}, inject = {}, varyings = [], bufferMode = 0x8c8d} = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {assertWebGLContext} from '../webgl-utils';\n\nconst FACES = [\n GL.TEXTURE_CUBE_MAP_POSITIVE_X,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_X,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Y,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Z,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Z\n];\n\nexport default class TextureCube extends Texture {\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n const {mipmaps = true, parameters = {}} = props;\n\n // Store props for accessors\n this.opts = props;\n\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n // TODO - should genMipmap() be called on the cubemap or on the faces?\n // TODO - without generateMipmap() cube textures do not work at all!!! Why?\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setParameters(parameters);\n });\n }\n\n subImage({face, data, x = 0, y = 0, mipmapLevel = 0}) {\n return this._subImage({target: face, data, x, y, mipmapLevel});\n }\n\n /* eslint-disable max-statements, max-len */\n async setCubeMapImageData({\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n }) {\n const {gl} = this;\n const imageDataMap = pixels || data;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const resolvedFaces = await Promise.all(\n FACES.map(face => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n })\n );\n\n this.bind();\n\n FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n }\n\n // TODO: update this method to accept LODs\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n // generateMipmap = false // TODO\n } = options;\n\n const {gl} = this;\n\n const imageData = pixels || data;\n\n this.bind();\n if (imageData instanceof Promise) {\n imageData.then(resolvedImageData =>\n this.setImageDataForFace(\n Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })\n )\n );\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n}\n\nTextureCube.FACES = FACES;\n","import GL from '@luma.gl/constants';\nimport {isWebGL2, withParameters} from '@luma.gl/gltools';\nimport {assertWebGL2Context} from '../webgl-utils';\nimport Texture from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './buffer';\n\nexport default class Texture3D extends Texture {\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n super(gl, props);\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // Image 3D copies from Typed Array or WebGLBuffer\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }) {\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n","// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils';\n\n// Clone a new texture object from a reference texture object.\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n","/** @license React v16.12.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var h=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113;n&&Symbol.for(\"react.suspense_list\");\nvar z=n?Symbol.for(\"react.memo\"):60115,aa=n?Symbol.for(\"react.lazy\"):60116;n&&Symbol.for(\"react.fundamental\");n&&Symbol.for(\"react.responder\");n&&Symbol.for(\"react.scope\");var A=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction B(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cP.length&&P.push(a)}\nfunction S(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var l=0;lb}return!1}function B(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1)});var sb=/[\\-:]([a-z])/g;function tb(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(sb,\ntb);D[b]=new B(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(sb,tb);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(sb,tb);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0)});function ub(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}\nfunction vb(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2=b.length))throw Error(u(93));b=b[0]}c=b}null==c&&(c=\"\")}a._wrapperState={initialValue:ub(c)}}\nfunction Mb(a,b){var c=ub(b.value),d=ub(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Nb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Ob={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Pb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Qb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Pb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Rb,Sb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Ob.svg||\"innerHTML\"in a)a.innerHTML=b;else{Rb=Rb||document.createElement(\"div\");Rb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Rb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Tb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Ub(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Vb={animationend:Ub(\"Animation\",\"AnimationEnd\"),animationiteration:Ub(\"Animation\",\"AnimationIteration\"),animationstart:Ub(\"Animation\",\"AnimationStart\"),transitionend:Ub(\"Transition\",\"TransitionEnd\")},Wb={},Xb={};\nYa&&(Xb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vb.animationend.animation,delete Vb.animationiteration.animation,delete Vb.animationstart.animation),\"TransitionEvent\"in window||delete Vb.transitionend.transition);function Yb(a){if(Wb[a])return Wb[a];if(!Vb[a])return a;var b=Vb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Xb)return Wb[a]=b[c];return a}var Zb=Yb(\"animationend\"),$b=Yb(\"animationiteration\"),ac=Yb(\"animationstart\"),bc=Yb(\"transitionend\"),cc=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \");\nfunction ec(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function fc(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function gc(a){if(ec(a)!==a)throw Error(u(188));}\nfunction hc(a){var b=a.alternate;if(!b){b=ec(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return gc(e),a;if(f===d)return gc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function ic(a){a=hc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nvar jc,kc,lc,mc=!1,nc=[],oc=null,pc=null,qc=null,rc=new Map,sc=new Map,tc=[],uc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),vc=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction wc(a){var b=xc(a);uc.forEach(function(c){yc(c,a,b)});vc.forEach(function(c){yc(c,a,b)})}function zc(a,b,c,d){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:d}}function Ac(a,b){switch(a){case \"focus\":case \"blur\":oc=null;break;case \"dragenter\":case \"dragleave\":pc=null;break;case \"mouseover\":case \"mouseout\":qc=null;break;case \"pointerover\":case \"pointerout\":rc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":sc.delete(b.pointerId)}}\nfunction Bc(a,b,c,d,e){if(null===a||a.nativeEvent!==e)return a=zc(b,c,d,e),null!==b&&(b=Cc(b),null!==b&&kc(b)),a;a.eventSystemFlags|=d;return a}function Dc(a,b,c,d){switch(b){case \"focus\":return oc=Bc(oc,a,b,c,d),!0;case \"dragenter\":return pc=Bc(pc,a,b,c,d),!0;case \"mouseover\":return qc=Bc(qc,a,b,c,d),!0;case \"pointerover\":var e=d.pointerId;rc.set(e,Bc(rc.get(e)||null,a,b,c,d));return!0;case \"gotpointercapture\":return e=d.pointerId,sc.set(e,Bc(sc.get(e)||null,a,b,c,d)),!0}return!1}\nfunction Ec(a){var b=Fc(a.target);if(null!==b){var c=ec(b);if(null!==c)if(b=c.tag,13===b){if(b=fc(c),null!==b){a.blockedOn=b;q.unstable_runWithPriority(a.priority,function(){lc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Gc(a){if(null!==a.blockedOn)return!1;var b=Hc(a.topLevelType,a.eventSystemFlags,a.nativeEvent);if(null!==b){var c=Cc(b);null!==c&&kc(c);a.blockedOn=b;return!1}return!0}\nfunction Ic(a,b,c){Gc(a)&&c.delete(b)}function Jc(){for(mc=!1;0this.eventPool.length&&this.eventPool.push(a)}function Vc(a){a.eventPool=[];a.getPooled=Wc;a.release=Xc}var Yc=E.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Zc=E.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),$c=E.extend({view:null,detail:null}),ad=$c.extend({relatedTarget:null});\nfunction bd(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar cd={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},dd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},ed={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function gd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=ed[a])?!!b[a]:!1}function hd(){return gd}\nvar id=$c.extend({key:function(a){if(a.key){var b=cd[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=bd(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?dd[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:hd,charCode:function(a){return\"keypress\"===a.type?bd(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?bd(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),jd=0,kd=0,ld=!1,md=!1,nd=$c.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:hd,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=jd;jd=a.screenX;return ld?\"mousemove\"===a.type?a.screenX-\nb:0:(ld=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;var b=kd;kd=a.screenY;return md?\"mousemove\"===a.type?a.screenY-b:0:(md=!0,0)}}),od=nd.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),pd=nd.extend({dataTransfer:null}),qd=$c.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:hd}),rd=E.extend({propertyName:null,\nelapsedTime:null,pseudoElement:null}),sd=nd.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),td=[[\"blur\",\"blur\",0],[\"cancel\",\"cancel\",0],[\"click\",\"click\",0],[\"close\",\"close\",0],[\"contextmenu\",\"contextMenu\",0],[\"copy\",\"copy\",0],[\"cut\",\"cut\",0],[\"auxclick\",\"auxClick\",0],[\"dblclick\",\"doubleClick\",0],[\"dragend\",\"dragEnd\",\n0],[\"dragstart\",\"dragStart\",0],[\"drop\",\"drop\",0],[\"focus\",\"focus\",0],[\"input\",\"input\",0],[\"invalid\",\"invalid\",0],[\"keydown\",\"keyDown\",0],[\"keypress\",\"keyPress\",0],[\"keyup\",\"keyUp\",0],[\"mousedown\",\"mouseDown\",0],[\"mouseup\",\"mouseUp\",0],[\"paste\",\"paste\",0],[\"pause\",\"pause\",0],[\"play\",\"play\",0],[\"pointercancel\",\"pointerCancel\",0],[\"pointerdown\",\"pointerDown\",0],[\"pointerup\",\"pointerUp\",0],[\"ratechange\",\"rateChange\",0],[\"reset\",\"reset\",0],[\"seeked\",\"seeked\",0],[\"submit\",\"submit\",0],[\"touchcancel\",\"touchCancel\",\n0],[\"touchend\",\"touchEnd\",0],[\"touchstart\",\"touchStart\",0],[\"volumechange\",\"volumeChange\",0],[\"drag\",\"drag\",1],[\"dragenter\",\"dragEnter\",1],[\"dragexit\",\"dragExit\",1],[\"dragleave\",\"dragLeave\",1],[\"dragover\",\"dragOver\",1],[\"mousemove\",\"mouseMove\",1],[\"mouseout\",\"mouseOut\",1],[\"mouseover\",\"mouseOver\",1],[\"pointermove\",\"pointerMove\",1],[\"pointerout\",\"pointerOut\",1],[\"pointerover\",\"pointerOver\",1],[\"scroll\",\"scroll\",1],[\"toggle\",\"toggle\",1],[\"touchmove\",\"touchMove\",1],[\"wheel\",\"wheel\",1],[\"abort\",\"abort\",\n2],[Zb,\"animationEnd\",2],[$b,\"animationIteration\",2],[ac,\"animationStart\",2],[\"canplay\",\"canPlay\",2],[\"canplaythrough\",\"canPlayThrough\",2],[\"durationchange\",\"durationChange\",2],[\"emptied\",\"emptied\",2],[\"encrypted\",\"encrypted\",2],[\"ended\",\"ended\",2],[\"error\",\"error\",2],[\"gotpointercapture\",\"gotPointerCapture\",2],[\"load\",\"load\",2],[\"loadeddata\",\"loadedData\",2],[\"loadedmetadata\",\"loadedMetadata\",2],[\"loadstart\",\"loadStart\",2],[\"lostpointercapture\",\"lostPointerCapture\",2],[\"playing\",\"playing\",2],[\"progress\",\n\"progress\",2],[\"seeking\",\"seeking\",2],[\"stalled\",\"stalled\",2],[\"suspend\",\"suspend\",2],[\"timeupdate\",\"timeUpdate\",2],[bc,\"transitionEnd\",2],[\"waiting\",\"waiting\",2]],ud={},vd={},wd=0;for(;wd=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ce(c)}}\nfunction ee(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?ee(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function fe(){for(var a=window,b=be();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=be(a.document)}return b}\nfunction ge(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var he=\"$\",ie=\"/$\",je=\"$?\",ke=\"$!\",le=null,me=null;function ne(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction oe(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var pe=\"function\"===typeof setTimeout?setTimeout:void 0,qe=\"function\"===typeof clearTimeout?clearTimeout:void 0;function re(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction se(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===he||c===ke||c===je){if(0===b)return a;b--}else c===ie&&b++}a=a.previousSibling}return null}var te=Math.random().toString(36).slice(2),ue=\"__reactInternalInstance$\"+te,ve=\"__reactEventHandlers$\"+te,we=\"__reactContainere$\"+te;\nfunction Fc(a){var b=a[ue];if(b)return b;for(var c=a.parentNode;c;){if(b=c[we]||c[ue]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=se(a);null!==a;){if(c=a[ue])return c;a=se(a)}return b}a=c;c=a.parentNode}return null}function Cc(a){a=a[ue]||a[we];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function xe(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function ye(a){return a[ve]||null}var ze=null,Ae=null,Be=null;\nfunction Ce(){if(Be)return Be;var a,b=Ae,c=b.length,d,e=\"value\"in ze?ze.value:ze.textContent,f=e.length;for(a=0;a=He),Ke=String.fromCharCode(32),Le={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},Me=!1;\nfunction Ne(a,b){switch(a){case \"keyup\":return-1!==Fe.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function Oe(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Pe=!1;function Qe(a,b){switch(a){case \"compositionend\":return Oe(b);case \"keypress\":if(32!==b.which)return null;Me=!0;return Ke;case \"textInput\":return a=b.data,a===Ke&&Me?null:a;default:return null}}\nfunction Re(a,b){if(Pe)return\"compositionend\"===a||!Ge&&Ne(a,b)?(a=Ce(),Be=Ae=ze=null,Pe=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,sf={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},tf=null,uf=null,vf=null,wf=!1;\nfunction xf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(wf||null==tf||tf!==be(c))return null;c=tf;\"selectionStart\"in c&&ge(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return vf&&qf(vf,c)?null:(vf=c,a=E.getPooled(sf.select,uf,a,b),a.type=\"select\",a.target=tf,Sc(a),a)}\nvar yf={eventTypes:sf,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=xc(e);f=ja.onSelect;for(var g=0;gBf||(a.current=Af[Bf],Af[Bf]=null,Bf--)}\nfunction I(a,b){Bf++;Af[Bf]=a.current;a.current=b}var Cf={},J={current:Cf},K={current:!1},Df=Cf;function Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Ff(a){G(K,a);G(J,a)}function Gf(a){G(K,a);G(J,a)}function Hf(a,b,c){if(J.current!==Cf)throw Error(u(168));I(J,b,a);I(K,c,a)}function If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,Wa(b)||\"Unknown\",e));return n({},c,{},d)}function Jf(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Cf;Df=J.current;I(J,b,a);I(K,K.current,a);return!0}\nfunction Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(b=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=b,G(K,a),G(J,a),I(J,b,a)):G(K,a);I(K,c,a)}\nvar Lf=q.unstable_runWithPriority,Mf=q.unstable_scheduleCallback,Nf=q.unstable_cancelCallback,Of=q.unstable_shouldYield,Pf=q.unstable_requestPaint,Qf=q.unstable_now,Rf=q.unstable_getCurrentPriorityLevel,Sf=q.unstable_ImmediatePriority,Tf=q.unstable_UserBlockingPriority,Uf=q.unstable_NormalPriority,Vf=q.unstable_LowPriority,Wf=q.unstable_IdlePriority,Xf={},Yf=void 0!==Pf?Pf:function(){},Zf=null,$f=null,ag=!1,bg=Qf(),cg=1E4>bg?Qf:function(){return Qf()-bg};\nfunction dg(){switch(Rf()){case Sf:return 99;case Tf:return 98;case Uf:return 97;case Vf:return 96;case Wf:return 95;default:throw Error(u(332));}}function eg(a){switch(a){case 99:return Sf;case 98:return Tf;case 97:return Uf;case 96:return Vf;case 95:return Wf;default:throw Error(u(332));}}function fg(a,b){a=eg(a);return Lf(a,b)}function gg(a,b,c){a=eg(a);return Mf(a,b,c)}function hg(a){null===Zf?(Zf=[a],$f=Mf(Sf,ig)):Zf.push(a);return Xf}function jg(){if(null!==$f){var a=$f;$f=null;Nf(a)}ig()}\nfunction ig(){if(!ag&&null!==Zf){ag=!0;var a=0;try{var b=Zf;fg(99,function(){for(;a=b&&(wg=!0),a.firstContext=null)}function xg(a,b){if(qg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)qg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===pg){if(null===og)throw Error(u(308));pg=b;og.dependencies={expirationTime:0,firstContext:b,responders:null}}else pg=pg.next=b}return a._currentValue}var yg=!1;\nfunction zg(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ag(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction Bg(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Cg(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction Dg(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=zg(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=zg(a.memoizedState),e=c.updateQueue=zg(c.memoizedState)):d=a.updateQueue=Ag(e):null===e&&(e=c.updateQueue=Ag(d));null===e||d===e?Cg(d,b):null===d.lastUpdate||null===e.lastUpdate?(Cg(d,b),Cg(e,b)):(Cg(d,b),e.lastUpdate=b)}\nfunction Eg(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=zg(a.memoizedState):Fg(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function Fg(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=Ag(b));return b}\nfunction Gg(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-4097|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case 2:yg=!0}return d}\nfunction Hg(a,b,c,d,e){yg=!1;b=Fg(a,b);for(var f=b.baseState,g=null,h=0,k=b.firstUpdate,l=f;null!==k;){var m=k.expirationTime;mx?(A=r,r=null):A=r.sibling;var p=y(e,r,h[x],k);if(null===p){null===r&&(r=A);break}a&&\nr&&null===p.alternate&&b(e,r);g=f(p,g,x);null===m?l=p:m.sibling=p;m=p;r=A}if(x===h.length)return c(e,r),l;if(null===r){for(;xx?(A=r,r=null):A=r.sibling;var z=y(e,r,p.value,k);if(null===z){null===r&&(r=A);break}a&&r&&null===z.alternate&&b(e,r);g=f(z,g,x);null===m?l=z:m.sibling=z;m=z;r=A}if(p.done)return c(e,r),l;if(null===r){for(;!p.done;x++,p=h.next())p=C(e,p.value,k),null!==p&&(g=f(p,g,x),null===m?l=p:m.sibling=p,m=p);return l}for(r=d(e,r);!p.done;x++,p=h.next())p=H(r,e,x,p.value,k),null!==p&&(a&&null!==\np.alternate&&r.delete(null===p.key?x:p.key),g=f(p,g,x),null===m?l=p:m.sibling=p,m=p);a&&r.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Ia&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Ga:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Ia:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Ia?f.props.children:f.props,h);d.ref=Yg(a,k,f);d.return=a;a=d;break a}else{c(a,\nk);break}else b(a,k);k=k.sibling}f.type===Ia?(d=eh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=ch(f.type,f.key,f.props,null,a.mode,h),h.ref=Yg(a,d,f),h.return=a,a=h)}return g(a);case Ha:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=dh(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===\ntypeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=bh(f,a.mode,h),d.return=a,a=d),g(a);if(Xg(f))return z(a,d,f,h);if(Ua(f))return ta(a,d,f,h);l&&Zg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var fh=$g(!0),gh=$g(!1),hh={},ih={current:hh},jh={current:hh},kh={current:hh};function lh(a){if(a===hh)throw Error(u(174));return a}\nfunction mh(a,b){I(kh,b,a);I(jh,a,a);I(ih,hh,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Qb(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Qb(b,c)}G(ih,a);I(ih,b,a)}function nh(a){G(ih,a);G(jh,a);G(kh,a)}function oh(a){lh(kh.current);var b=lh(ih.current);var c=Qb(b,a.type);b!==c&&(I(jh,a,a),I(ih,c,a))}function ph(a){jh.current===a&&(G(ih,a),G(jh,a))}var M={current:0};\nfunction qh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===je||c.data===ke))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function rh(a,b){return{responder:a,props:b}}\nvar sh=Ea.ReactCurrentDispatcher,N=Ea.ReactCurrentBatchConfig,th=0,uh=null,O=null,vh=null,wh=null,P=null,xh=null,yh=0,zh=null,Ah=0,Bh=!1,Ch=null,Gh=0;function Q(){throw Error(u(321));}function Hh(a,b){if(null===b)return!1;for(var c=0;cyh&&(yh=m,Jg(yh))):(Ig(m,k.suspenseConfig),f=k.eagerReducer===a?k.eagerState:a(f,k.action));g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);of(f,b.memoizedState)||(wg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction Rh(a){var b=Nh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:Ph,lastRenderedState:a};a=a.dispatch=Sh.bind(null,uh,a);return[b.memoizedState,a]}function Th(a){return Qh(Ph,a)}function Uh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===zh?(zh={lastEffect:null},zh.lastEffect=a.next=a):(b=zh.lastEffect,null===b?zh.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,zh.lastEffect=a));return a}\nfunction Vh(a,b,c,d){var e=Nh();Ah|=a;e.memoizedState=Uh(b,c,void 0,void 0===d?null:d)}function Wh(a,b,c,d){var e=Oh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Hh(d,g.deps)){Uh(0,c,f,d);return}}Ah|=a;e.memoizedState=Uh(b,c,f,d)}function Xh(a,b){return Vh(516,192,a,b)}function Yh(a,b){return Wh(516,192,a,b)}\nfunction Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function $h(){}function ai(a,b){Nh().memoizedState=[a,void 0===b?null:b];return a}function bi(a,b){var c=Oh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Hh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Sh(a,b,c){if(!(25>Gh))throw Error(u(301));var d=a.alternate;if(a===uh||null!==d&&d===uh)if(Bh=!0,a={expirationTime:th,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===Ch&&(Ch=new Map),c=Ch.get(b),void 0===c)Ch.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=Pg(),f=Mg.suspense;e=Qg(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&\n(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(of(l,k))return}catch(m){}finally{}Rg(a,e)}}\nvar Lh={readContext:xg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},Jh={readContext:xg,useCallback:ai,useContext:xg,useEffect:Xh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,36,Zh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Vh(4,36,a,b)},useMemo:function(a,b){var c=Nh();b=void 0===b?null:b;a=a();c.memoizedState=\n[a,b];return a},useReducer:function(a,b,c){var d=Nh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Sh.bind(null,uh,a);return[d.memoizedState,a]},useRef:function(a){var b=Nh();a={current:a};return b.memoizedState=a},useState:Rh,useDebugValue:$h,useResponder:rh,useDeferredValue:function(a,b){var c=Rh(a),d=c[0],e=c[1];Xh(function(){q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===b?null:b;try{e(a)}finally{N.suspense=\nc}})},[a,b]);return d},useTransition:function(a){var b=Rh(!1),c=b[0],d=b[1];return[ai(function(b){d(!0);q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===a?null:a;try{d(!1),b()}finally{N.suspense=c}})},[a,c]),c]}},Kh={readContext:xg,useCallback:bi,useContext:xg,useEffect:Yh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Wh(4,36,Zh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Wh(4,36,a,b)},useMemo:function(a,b){var c=Oh();b=void 0===b?\nnull:b;var d=c.memoizedState;if(null!==d&&null!==b&&Hh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:Qh,useRef:function(){return Oh().memoizedState},useState:Th,useDebugValue:$h,useResponder:rh,useDeferredValue:function(a,b){var c=Th(a),d=c[0],e=c[1];Yh(function(){q.unstable_next(function(){var c=N.suspense;N.suspense=void 0===b?null:b;try{e(a)}finally{N.suspense=c}})},[a,b]);return d},useTransition:function(a){var b=Th(!1),c=b[0],d=b[1];return[bi(function(b){d(!0);q.unstable_next(function(){var c=\nN.suspense;N.suspense=void 0===a?null:a;try{d(!1),b()}finally{N.suspense=c}})},[a,c]),c]}},ci=null,di=null,ei=!1;function fi(a,b){var c=gi(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction hi(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ii(a){if(ei){var b=di;if(b){var c=b;if(!hi(a,b)){b=re(c.nextSibling);if(!b||!hi(a,b)){a.effectTag=a.effectTag&-1025|2;ei=!1;ci=a;return}fi(ci,c)}ci=a;di=re(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,ei=!1,ci=a}}function ji(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;ci=a}\nfunction ki(a){if(a!==ci)return!1;if(!ei)return ji(a),ei=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!oe(b,a.memoizedProps))for(b=di;b;)fi(a,b),b=re(b.nextSibling);ji(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===ie){if(0===b){di=re(a.nextSibling);break a}b--}else c!==he&&c!==ke&&c!==je||b++}a=a.nextSibling}di=null}}else di=ci?re(a.stateNode.nextSibling):null;return!0}\nfunction li(){di=ci=null;ei=!1}var mi=Ea.ReactCurrentOwner,wg=!1;function R(a,b,c,d){b.child=null===a?gh(b,null,c,d):fh(b,a.child,c,d)}function ni(a,b,c,d,e){c=c.render;var f=b.ref;vg(b,e);d=Ih(a,b,c,d,f,e);if(null!==a&&!wg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),oi(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction pi(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!qi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ri(a,b,g,d,e,f);a=ch(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(eb)&&Gj.set(a,b)))}}\nfunction Kj(a,b){a.expirationTimea?b:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=hg(Lj.bind(null,a));else{var b=Oj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Pg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Xf&&Nf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?hg(Lj.bind(null,a)):gg(d,Qj.bind(null,a),{timeout:10*(1073741821-b)-cg()});a.callbackNode=b}}}\nfunction Qj(a,b){Jj=0;if(b)return b=Pg(),Rj(a,b),Z(a),null;var c=Oj(a);if(0!==c){b=a.callbackNode;if((T&(oj|pj))!==S)throw Error(u(327));Sj();a===U&&c===W||Tj(a,c);if(null!==V){var d=T;T|=oj;var e=Uj(a);do try{Vj();break}catch(h){Wj(a,h)}while(1);rg();T=d;lj.current=e;if(X===rj)throw b=wj,Tj(a,c),Mj(a,c),Z(a),b;if(null===V)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=X,U=null,d){case qj:case rj:throw Error(u(345));case sj:Rj(a,2=c){a.lastPingedTime=c;Tj(a,c);break}}f=Oj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=pe(Yj.bind(null,a),e);break}Yj(a);break;case uj:Mj(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Xj(e));if(Bj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Tj(a,c);break}e=Oj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==yj?d=10*(1073741821-yj)-cg():1073741823===xj?d=0:(d=10*(1073741821-xj)-5E3,e=cg(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*kj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=cg()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+Xa(e))}X!==vj&&(X=sj);f=Ni(f,e);k=d;do{switch(k.tag){case 3:g=f;k.effectTag|=4096;k.expirationTime=b;var x=fj(k,g,b);Eg(k,x);break a;case 1:g=f;var A=k.type,p=k.stateNode;if(0===(k.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==p&&\"function\"===typeof p.componentDidCatch&&\n(null===jj||!jj.has(p)))){k.effectTag|=4096;k.expirationTime=b;var t=ij(k,g,b);Eg(k,t);break a}}k=k.return}while(null!==k)}V=ek(V)}catch(v){b=v;continue}break}while(1)}function Uj(){var a=lj.current;lj.current=Lh;return null===a?Lh:a}function Ig(a,b){aAj&&(Aj=a)}function Zj(){for(;null!==V;)V=fk(V)}function Vj(){for(;null!==V&&!Of();)V=fk(V)}\nfunction fk(a){var b=gk(a.alternate,a,W);a.memoizedProps=a.pendingProps;null===b&&(b=ek(a));mj.current=null;return b}\nfunction ek(a){V=a;do{var b=V.alternate;a=V.return;if(0===(V.effectTag&2048)){a:{var c=b;b=V;var d=W;var e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:L(b.type)&&Ff(b);break;case 3:nh(b);Gf(b);e=b.stateNode;e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=null);(null===c||null===c.child)&&ki(b)&&Ci(b);Ii(b);break;case 5:ph(b);d=lh(kh.current);var f=b.type;if(null!==c&&null!=b.stateNode)Ji(c,b,f,e,d),c.ref!==b.ref&&(b.effectTag|=128);else if(e){var g=\nlh(ih.current);if(ki(b)){e=b;var h=e.stateNode;c=e.type;var k=e.memoizedProps,l=d;h[ue]=e;h[ve]=k;f=void 0;d=h;switch(c){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(h=0;h\\x3c/script>\",h=k.removeChild(k.firstChild)):\"string\"===typeof k.is?h=h.createElement(l,{is:k.is}):(h=h.createElement(l),\"select\"===l&&(l=h,k.multiple?l.multiple=!0:k.size&&(l.size=k.size))):h=h.createElementNS(g,l);k=h;k[ue]=c;k[ve]=e;Hi(k,b,!1,!1);b.stateNode=k;l=f;c=e;var m=d,C=Zd(l,c);switch(l){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\nk);d=c;break;case \"video\":case \"audio\":for(d=0;de.tailExpiration&&1f&&(f=c),k>f&&(f=k),d=d.sibling;e.childExpirationTime=f}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=\nV.firstEffect),a.lastEffect=V.lastEffect),1a?b:a}function Yj(a){var b=dg();fg(99,ik.bind(null,a,b));return null}\nfunction ik(a,b){do Sj();while(null!==Ej);if((T&(oj|pj))!==S)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Xj(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(V=U=null,W=0);1h&&(l=h,h=g,g=l),l=de(p,g),m=de(p,h),l&&m&&(1!==v.rangeCount||v.anchorNode!==l.node||v.anchorOffset!==l.offset||v.focusNode!==m.node||v.focusOffset!==m.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),v.removeAllRanges(),g>h?(v.addRange(t),v.extend(m.node,m.offset)):(t.setEnd(m.node,m.offset),v.addRange(t))))));t=[];for(v=p;v=v.parentNode;)1===v.nodeType&&t.push({element:v,left:v.scrollLeft,top:v.scrollTop});\n\"function\"===typeof p.focus&&p.focus();for(p=0;p=c)return yi(a,b,c);I(M,M.current&\n1,b);b=oi(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1,b);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return Bi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current,b);if(!d)return null}return oi(a,b,c)}wg=!1}}else wg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Ef(b,J.current);vg(b,c);e=Ih(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;Mh();if(L(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Og(b,d,g,a);e.updater=Sg;b.stateNode=e;e._reactInternalFiber=b;Wg(b,d,a,c);b=vi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;Va(e);if(1!==e._status)throw e._result;\ne=e._result;b.type=e;f=b.tag=nk(e);a=mg(e,a);switch(f){case 0:b=si(null,b,e,a,c);break;case 1:b=ui(null,b,e,a,c);break;case 11:b=ni(null,b,e,a,c);break;case 14:b=pi(null,b,e,mg(e.type,a),d,c);break;default:throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),si(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),ui(a,b,d,e,c);case 3:wi(b);d=b.updateQueue;if(null===d)throw Error(u(282));e=b.memoizedState;e=null!==e?e.element:\nnull;Hg(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)li(),b=oi(a,b,c);else{if(e=b.stateNode.hydrate)di=re(b.stateNode.containerInfo.firstChild),ci=b,e=ei=!0;if(e)for(c=gh(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),li();b=b.child}return b;case 5:return oh(b),null===a&&ii(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,oe(d,e)?g=null:null!==f&&oe(d,f)&&(b.effectTag|=16),ti(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=\nb.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&ii(b),null;case 13:return yi(a,b,c);case 4:return mh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=fh(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:mg(d,e),ni(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;\ne=b.pendingProps;g=b.memoizedProps;f=e.value;sg(b,f);if(null!==g){var h=g.value;f=of(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!K.current){b=oi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=Bg(c,null),l.tag=2,Dg(h,l));h.expirationTime=b&&a<=b}function Mj(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction Nj(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Rj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction rk(a,b,c,d){var e=b.current,f=Pg(),g=Mg.suspense;f=Qg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(ec(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=Bg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);Dg(e,b);Rg(e,f);return f}function sk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function tk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};exports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime {\n\n // We are modularizing this manually because the current modularize setting in Emscripten has some issues:\n // https://github.com/kripken/emscripten/issues/5820\n\n // The way to affect the loading of emcc compiled modules is to create a variable called `Module` and add\n // properties to it, like `preRun`, `postRun`, etc\n // We are using that to get notified when the WASM has finished loading.\n // Only then will we return our promise\n\n // If they passed in a moduleConfig object, use that\n // Otherwise, initialize Module to the empty object\n var Module = typeof moduleConfig !== 'undefined' ? moduleConfig : {};\n\n // EMCC only allows for a single onAbort function (not an array of functions)\n // So if the user defined their own onAbort function, we remember it and call it\n var originalOnAbortFunction = Module['onAbort'];\n Module['onAbort'] = function (errorThatCausedAbort) {\n reject(new Error(errorThatCausedAbort));\n if (originalOnAbortFunction){\n originalOnAbortFunction(errorThatCausedAbort);\n }\n };\n\n Module['postRun'] = Module['postRun'] || [];\n Module['postRun'].push(function () {\n // When Emscripted calls postRun, this promise resolves with the built Module\n resolveModule(Module);\n });\n\n // There is a section of code in the emcc-generated code below that looks like this:\n // (Note that this is lowercase `module`)\n // if (typeof module !== 'undefined') {\n // module['exports'] = Module;\n // }\n // When that runs, it's going to overwrite our own modularization export efforts in shell-post.js!\n // The only way to tell emcc not to emit it is to pass the MODULARIZE=1 or MODULARIZE_INSTANCE=1 flags,\n // but that carries with it additional unnecessary baggage/bugs we don't want either.\n // So, we have three options:\n // 1) We undefine `module`\n // 2) We remember what `module['exports']` was at the beginning of this function and we restore it later\n // 3) We write a script to remove those lines of code as part of the Make process.\n //\n // Since those are the only lines of code that care about module, we will undefine it. It's the most straightforward\n // of the options, and has the side effect of reducing emcc's efforts to modify the module if its output were to change in the future.\n // That's a nice side effect since we're handling the modularization efforts ourselves\n module = undefined;\n \n // The emcc-generated code and shell-post.js code goes below,\n // meaning that all of it runs inside of this promise. If anything throws an exception, our promise will abort\nvar f;f||(f=typeof Module !== 'undefined' ? Module : {});\nvar ua=function(){var a;var b=h(4);var c={};var d=function(){function a(a,b){this.jb=a;this.db=b;this.qb=1;this.Hb=[]}a.prototype.bind=function(a){if(!this.jb)throw\"Statement closed\";this.reset();return Array.isArray(a)?this.cc(a):this.dc(a)};a.prototype.step=function(){var a;if(!this.jb)throw\"Statement closed\";this.qb=1;switch(a=ec(this.jb)){case c.Zb:return!0;case c.DONE:return!1;default:return this.db.handleError(a)}};a.prototype.kc=function(a){null==a&&(a=this.qb++);return fc(this.jb,a)};a.prototype.lc=\nfunction(a){null==a&&(a=this.qb++);return hc(this.jb,a)};a.prototype.getBlob=function(a){var b;null==a&&(a=this.qb++);var c=ic(this.jb,a);var d=jc(this.jb,a);var e=new Uint8Array(c);for(a=b=0;0<=c?bc;a=0<=c?++b:--b)e[a]=l[d+a];return e};a.prototype.get=function(a){var b,d;null!=a&&this.bind(a)&&this.step();var e=[];a=b=0;for(d=rb(this.jb);0<=d?bd;a=0<=d?++b:--b)switch(kc(this.jb,a)){case c.Yb:case c.FLOAT:e.push(this.kc(a));break;case c.$b:e.push(this.lc(a));break;case c.Xb:e.push(this.getBlob(a));\nbreak;default:e.push(null)}return e};a.prototype.getColumnNames=function(){var a,b;var c=[];var d=a=0;for(b=rb(this.jb);0<=b?ab;d=0<=b?++a:--a)c.push(lc(this.jb,d));return c};a.prototype.getAsObject=function(a){var b,c;var d=this.get(a);var e=this.getColumnNames();var g={};a=b=0;for(c=e.length;b>>0);if(null!=a){var c=this.filename,d=c?n(\"/\",c):\"/\";c=da(!0,!0);d=ea(d,(void 0!==c?c:438)&4095|32768,0);if(a){if(\"string\"===typeof a){for(var e=Array(a.length),k=0,m=a.length;kc;e=0<=c?++g:--g){var m=q(d+4*e,\"i32\");var v=vc(m);e=function(){switch(!1){case 1!==v:return wb;case 2!==v:return wb;case 3!==v:return wc;case 4!==v:return function(a){var b,c;var d=yc(a);var e=zc(a);a=new Uint8Array(d);for(b=c=0;0<=d?cd;b=0<=d?++c:--c)a[b]=l[e+b];return a};default:return function(){return null}}}();e=e(m);k.push(e)}try{var r=b.apply(null,k)}catch(xc){r=\nxc;xb(a,r,-1);return}switch(typeof r){case \"boolean\":Ac(a,r?1:0);break;case \"number\":Bc(a,r);break;case \"string\":Cc(a,r,-1,-1);break;case \"object\":null===r?yb(a):null!=r.length?(c=ba(r),Dc(a,c,r.length,-1),ca(c)):xb(a,\"Wrong API use : tried to return a value of an unknown type (\"+r+\").\",-1);break;default:yb(a)}});this.rb[a]=d;this.handleError(Ec(this.db,a,b.length,c.ac,0,d,0,0,0));return this};return a}();var g=f.cwrap(\"sqlite3_open\",\"number\",[\"string\",\"number\"]);var k=f.cwrap(\"sqlite3_close_v2\",\n\"number\",[\"number\"]);var m=f.cwrap(\"sqlite3_exec\",\"number\",[\"number\",\"string\",\"number\",\"number\",\"number\"]);f.cwrap(\"sqlite3_free\",\"\",[\"number\"]);var r=f.cwrap(\"sqlite3_changes\",\"number\",[\"number\"]);var v=f.cwrap(\"sqlite3_prepare_v2\",\"number\",[\"number\",\"string\",\"number\",\"number\",\"number\"]);var K=f.cwrap(\"sqlite3_prepare_v2\",\"number\",[\"number\",\"number\",\"number\",\"number\",\"number\"]);var J=f.cwrap(\"sqlite3_bind_text\",\"number\",[\"number\",\"number\",\"number\",\"number\",\"number\"]);var S=f.cwrap(\"sqlite3_bind_blob\",\n\"number\",[\"number\",\"number\",\"number\",\"number\",\"number\"]);var nc=f.cwrap(\"sqlite3_bind_double\",\"number\",[\"number\",\"number\",\"number\"]);var mc=f.cwrap(\"sqlite3_bind_int\",\"number\",[\"number\",\"number\",\"number\"]);var oc=f.cwrap(\"sqlite3_bind_parameter_index\",\"number\",[\"number\",\"string\"]);var ec=f.cwrap(\"sqlite3_step\",\"number\",[\"number\"]);var tc=f.cwrap(\"sqlite3_errmsg\",\"string\",[\"number\"]);var rb=f.cwrap(\"sqlite3_data_count\",\"number\",[\"number\"]);var fc=f.cwrap(\"sqlite3_column_double\",\"number\",[\"number\",\n\"number\"]);var hc=f.cwrap(\"sqlite3_column_text\",\"string\",[\"number\",\"number\"]);var jc=f.cwrap(\"sqlite3_column_blob\",\"number\",[\"number\",\"number\"]);var ic=f.cwrap(\"sqlite3_column_bytes\",\"number\",[\"number\",\"number\"]);var kc=f.cwrap(\"sqlite3_column_type\",\"number\",[\"number\",\"number\"]);var lc=f.cwrap(\"sqlite3_column_name\",\"string\",[\"number\",\"number\"]);var qc=f.cwrap(\"sqlite3_reset\",\"number\",[\"number\"]);var pc=f.cwrap(\"sqlite3_clear_bindings\",\"number\",[\"number\"]);var rc=f.cwrap(\"sqlite3_finalize\",\"number\",\n[\"number\"]);var Ec=f.cwrap(\"sqlite3_create_function_v2\",\"number\",\"number string number number number number number number number\".split(\" \"));var vc=f.cwrap(\"sqlite3_value_type\",\"number\",[\"number\"]);var yc=f.cwrap(\"sqlite3_value_bytes\",\"number\",[\"number\"]);var wc=f.cwrap(\"sqlite3_value_text\",\"string\",[\"number\"]);f.cwrap(\"sqlite3_value_int\",\"number\",[\"number\"]);var zc=f.cwrap(\"sqlite3_value_blob\",\"number\",[\"number\"]);var wb=f.cwrap(\"sqlite3_value_double\",\"number\",[\"number\"]);var Bc=f.cwrap(\"sqlite3_result_double\",\n\"\",[\"number\",\"number\"]);var yb=f.cwrap(\"sqlite3_result_null\",\"\",[\"number\"]);var Cc=f.cwrap(\"sqlite3_result_text\",\"\",[\"number\",\"string\",\"number\",\"number\"]);var Dc=f.cwrap(\"sqlite3_result_blob\",\"\",[\"number\",\"number\",\"number\",\"number\"]);var Ac=f.cwrap(\"sqlite3_result_int\",\"\",[\"number\",\"number\"]);f.cwrap(\"sqlite3_result_int64\",\"\",[\"number\",\"number\"]);var xb=f.cwrap(\"sqlite3_result_error\",\"\",[\"number\",\"string\",\"number\"]);var sc=f.cwrap(\"RegisterExtensionFunctions\",\"number\",[\"number\"]);this.SQL={Database:e};\nfor(a in this.SQL)f[a]=this.SQL[a];var ja=0;c.Bb=0;c.Ac=1;c.Dc=2;c.Nc=3;c.uc=4;c.wc=5;c.Gc=6;c.NOMEM=7;c.Qc=8;c.Ec=9;c.Fc=10;c.zc=11;c.NOTFOUND=12;c.Cc=13;c.xc=14;c.Oc=15;c.EMPTY=16;c.Rc=17;c.Sc=18;c.yc=19;c.Hc=20;c.Ic=21;c.Jc=22;c.vc=23;c.Bc=24;c.Pc=25;c.Kc=26;c.Lc=27;c.Tc=28;c.Zb=100;c.DONE=101;c.Yb=1;c.FLOAT=2;c.$b=3;c.Xb=4;c.Mc=5;c.ac=1}.bind(this);f.onRuntimeInitialized=ua;var va={},w;for(w in f)f.hasOwnProperty(w)&&(va[w]=f[w]);var xa=\"./this.program\",ya=!1,x=!1,za=!1,Aa=!1,Ba=!1;\nya=\"object\"===typeof window;x=\"function\"===typeof importScripts;za=(Aa=\"object\"===typeof process&&\"object\"===typeof process.versions&&\"string\"===typeof process.versions.node)&&!ya&&!x;Ba=!ya&&!za&&!x;var y=\"\",Ca,Da;\nif(za){y=__dirname+\"/\";var Ea,Fa;Ca=function(a,b){Ea||(Ea=require(\"fs\"));Fa||(Fa=require(\"path\"));a=Fa.normalize(a);a=Ea.readFileSync(a);return b?a:a.toString()};Da=function(a){a=Ca(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1>2];a=b+a+15&-16;a>Ja()&&z();B[Ia>>2]=a;return b}\nvar Ka={\"f64-rem\":function(a,b){return a%b},\"debugger\":function(){}},oa=1,u=Array(64);function ta(a){for(var b=0;64>b;b++)if(!u[b])return u[b]=a,oa+b;throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\";}var La;f.wasmBinary&&(La=f.wasmBinary);\"object\"!==typeof WebAssembly&&A(\"no native wasm support detected\");\nfunction ma(a){var b=\"i32\";\"*\"===b.charAt(b.length-1)&&(b=\"i32\");switch(b){case \"i1\":l[a>>0]=0;break;case \"i8\":l[a>>0]=0;break;case \"i16\":Ma[a>>1]=0;break;case \"i32\":B[a>>2]=0;break;case \"i64\":C=[0,(D=0,1<=+Na(D)?0>>0:~~+Qa((D-+(~~D>>>0))/4294967296)>>>0:0)];B[a>>2]=C[0];B[a+4>>2]=C[1];break;case \"float\":Ra[a>>2]=0;break;case \"double\":Sa[a>>3]=0;break;default:z(\"invalid type for setValue: \"+b)}}\nfunction q(a,b){b=b||\"i8\";\"*\"===b.charAt(b.length-1)&&(b=\"i32\");switch(b){case \"i1\":return l[a>>0];case \"i8\":return l[a>>0];case \"i16\":return Ma[a>>1];case \"i32\":return B[a>>2];case \"i64\":return B[a>>2];case \"float\":return Ra[a>>2];case \"double\":return Sa[a>>3];default:z(\"invalid type for getValue: \"+b)}return null}var E,Ta=!1;function assert(a,b){a||z(\"Assertion failed: \"+b)}function Ua(a){var b=f[\"_\"+a];assert(b,\"Cannot call unknown function \"+a+\", make sure it is exported\");return b}\nfunction Va(a,b,c,d){var e={string:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=h(c);t(a,F,b,c)}return b},array:function(a){var b=h(a.length);l.set(a,b);return b}},g=Ua(a),k=[];a=0;if(d)for(var m=0;m>2]=0;for(a=b+d;e>0]=0;return b}a.subarray||a.slice?F.set(a,b):F.set(new Uint8Array(a),b);return b}var Za=\"undefined\"!==typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction ra(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function G(a){return a?ra(F,a,void 0):\"\"}\nfunction t(a,b,c,d){if(!(0=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e}\nfunction la(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}\"undefined\"!==typeof TextDecoder&&new TextDecoder(\"utf-16le\");function $a(a){0>2]=5303216;\nfunction cb(a){for(;0>2];var c=B[b>>2]}else tb.ub=!0,L.USER=L.LOGNAME=\"web_user\",L.PATH=\"/\",L.PWD=\"/\",L.HOME=\"/home/web_user\",L.LANG=(\"object\"===typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",L._=xa,c=hb?Ya(1024):Ha(1024),b=hb?Ya(256):Ha(256),B[b>>2]=c,B[a>>2]=b;a=[];var d=0,e;for(e in L)if(\"string\"===typeof L[e]){var g=e+\"=\"+L[e];a.push(g);d+=g.length}if(1024>0]=d.charCodeAt(m);l[k>>0]=0;B[b+4*e>>2]=c;c+=g.length+1}B[b+4*a.length>>2]=0}function ub(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];\".\"===e?a.splice(d,1):\"..\"===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift(\"..\");return a}function vb(a){var b=\"/\"===a.charAt(0),c=\"/\"===a.substr(-1);(a=ub(a.split(\"/\").filter(function(a){return!!a}),!b).join(\"/\"))||b||(a=\".\");a&&c&&(a+=\"/\");return(b?\"/\":\"\")+a}\nfunction zb(a){var b=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return\".\";b&&(b=b.substr(0,b.length-1));return a+b}function Ab(a){if(\"/\"===a)return\"/\";var b=a.lastIndexOf(\"/\");return-1===b?a:a.substr(b+1)}function Bb(){var a=Array.prototype.slice.call(arguments,0);return vb(a.join(\"/\"))}function n(a,b){return vb(a+\"/\"+b)}function Cb(a){f.___errno_location&&(B[f.___errno_location()>>2]=a);return a}\nfunction Db(){for(var a=\"\",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:\"/\";if(\"string\"!==typeof b)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!b)return\"\";a=b+\"/\"+a;b=\"/\"===b.charAt(0)}a=ub(a.split(\"/\").filter(function(a){return!!a}),!b).join(\"/\");return(b?\"/\":\"\")+a||\".\"}var Eb=[];function Fb(a,b){Eb[a]={input:[],output:[],yb:b};Gb(a,Hb)}\nvar Hb={open:function(a){var b=Eb[a.node.rdev];if(!b)throw new M(19);a.tty=b;a.seekable=!1},close:function(a){a.tty.yb.flush(a.tty)},flush:function(a){a.tty.yb.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.yb.Vb)throw new M(6);for(var e=0,g=0;g=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.gb,a.gb=new Uint8Array(b),0b)a.gb.length=b;else for(;a.gb.length=a.node.kb)return 0;a=Math.min(a.node.kb-e,d);if(8b)throw new M(22);return b},Nb:function(a,b,c){N.Rb(a.node,b+c);a.node.kb=\nMath.max(a.node.kb,b+c)},Db:function(a,b,c,d,e,g,k){if(32768!==(a.node.mode&61440))throw new M(19);c=a.node.gb;if(k&2||c.buffer!==b&&c.buffer!==b.buffer){if(0>2)}catch(c){if(!c.code)throw c;throw new M(-c.hb);}return b.mode},nb:function(a){for(var b=[];a.parent!==a;)b.push(a.name),a=a.parent;b.push(a.mb.Kb.root);b.reverse();return Bb.apply(null,b)},ic:function(a){a&=-2656257;var b=0,c;for(c in P.Sb)a&c&&(b|=P.Sb[c],a^=c);if(a)throw new M(22);return b},fb:{ob:function(a){a=P.nb(a);try{var b=fs.lstatSync(a)}catch(c){if(!c.code)throw c;throw new M(-c.hb);}P.Cb&&!b.tb&&(b.tb=4096);P.Cb&&!b.blocks&&(b.blocks=(b.size+b.tb-1)/\nb.tb|0);return{dev:b.dev,ino:b.ino,mode:b.mode,nlink:b.nlink,uid:b.uid,gid:b.gid,rdev:b.rdev,size:b.size,atime:b.atime,mtime:b.mtime,ctime:b.ctime,tb:b.tb,blocks:b.blocks}},lb:function(a,b){var c=P.nb(a);try{void 0!==b.mode&&(fs.chmodSync(c,b.mode),a.mode=b.mode),void 0!==b.size&&fs.truncateSync(c,b.size)}catch(d){if(!d.code)throw d;throw new M(-d.hb);}},lookup:function(a,b){var c=n(P.nb(a),b);c=P.Ub(c);return P.createNode(a,b,c)},zb:function(a,b,c,d){a=P.createNode(a,b,c,d);b=P.nb(a);try{O(a.mode)?\nfs.mkdirSync(b,a.mode):fs.writeFileSync(b,\"\",{mode:a.mode})}catch(e){if(!e.code)throw e;throw new M(-e.hb);}return a},rename:function(a,b,c){a=P.nb(a);b=n(P.nb(b),c);try{fs.renameSync(a,b)}catch(d){if(!d.code)throw d;throw new M(-d.hb);}},unlink:function(a,b){a=n(P.nb(a),b);try{fs.unlinkSync(a)}catch(c){if(!c.code)throw c;throw new M(-c.hb);}},rmdir:function(a,b){a=n(P.nb(a),b);try{fs.rmdirSync(a)}catch(c){if(!c.code)throw c;throw new M(-c.hb);}},readdir:function(a){a=P.nb(a);try{return fs.readdirSync(a)}catch(b){if(!b.code)throw b;\nthrow new M(-b.hb);}},symlink:function(a,b,c){a=n(P.nb(a),b);try{fs.symlinkSync(c,a)}catch(d){if(!d.code)throw d;throw new M(-d.hb);}},readlink:function(a){var b=P.nb(a);try{return b=fs.readlinkSync(b),b=Ob.relative(Ob.resolve(a.mb.Kb.root),b)}catch(c){if(!c.code)throw c;throw new M(-c.hb);}}},ib:{open:function(a){var b=P.nb(a.node);try{32768===(a.node.mode&61440)&&(a.Ab=fs.openSync(b,P.ic(a.flags)))}catch(c){if(!c.code)throw c;throw new M(-c.hb);}},close:function(a){try{32768===(a.node.mode&61440)&&\na.Ab&&fs.closeSync(a.Ab)}catch(b){if(!b.code)throw b;throw new M(-b.hb);}},read:function(a,b,c,d,e){if(0===d)return 0;try{return fs.readSync(a.Ab,P.Pb(b.buffer),c,d,e)}catch(g){throw new M(-g.hb);}},write:function(a,b,c,d,e){try{return fs.writeSync(a.Ab,P.Pb(b.buffer),c,d,e)}catch(g){throw new M(-g.hb);}},sb:function(a,b,c){if(1===c)b+=a.position;else if(2===c&&32768===(a.node.mode&61440))try{b+=fs.fstatSync(a.Ab).size}catch(d){throw new M(-d.hb);}if(0>b)throw new M(22);return b}}},Pb=null,Qb={},\nQ=[],Rb=1,R=null,Sb=!0,T={},M=null,Mb={};\nfunction U(a,b){a=Db(\"/\",a);b=b||{};if(!a)return{path:\"\",node:null};var c={Tb:!0,Mb:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%R.length}function Wb(a){var b=Vb(a.parent.id,a.name);a.xb=R[b];R[b]=a}function Xb(a){var b=Vb(a.parent.id,a.name);if(R[b]===a)R[b]=a.xb;else for(b=R[b];b;){if(b.xb===a){b.xb=a.xb;break}b=b.xb}}\nfunction Nb(a,b){var c;if(c=(c=Yb(a,\"x\"))?c:a.fb.lookup?0:13)throw new M(c,a);for(c=R[Vb(a.id,b)];c;c=c.xb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.fb.lookup(a,b)}\nfunction Lb(a,b,c,d){Zb||(Zb=function(a,b,c,d){a||(a=this);this.parent=a;this.mb=a.mb;this.wb=null;this.id=Rb++;this.name=b;this.mode=c;this.fb={};this.ib={};this.rdev=d},Zb.prototype={},Object.defineProperties(Zb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}}));a=new Zb(a,b,c,d);Wb(a);return a}\nfunction O(a){return 16384===(a&61440)}var $b={r:0,rs:1052672,\"r+\":2,w:577,wx:705,xw:705,\"w+\":578,\"wx+\":706,\"xw+\":706,a:1089,ax:1217,xa:1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218};function ac(a){var b=[\"r\",\"w\",\"rw\"][a&3];a&512&&(b+=\"w\");return b}function Yb(a,b){if(Sb)return 0;if(-1===b.indexOf(\"r\")||a.mode&292){if(-1!==b.indexOf(\"w\")&&!(a.mode&146)||-1!==b.indexOf(\"x\")&&!(a.mode&73))return 13}else return 13;return 0}function bc(a,b){try{return Nb(a,b),17}catch(c){}return Yb(a,\"wx\")}\nfunction cc(a,b,c){try{var d=Nb(a,b)}catch(e){return e.hb}if(a=Yb(a,\"wx\"))return a;if(c){if(!O(d.mode))return 20;if(d===d.parent||\"/\"===Ub(d))return 16}else if(O(d.mode))return 21;return 0}function dc(a){var b=4096;for(a=a||0;a<=b;a++)if(!Q[a])return a;throw new M(24);}\nfunction uc(a,b){Fc||(Fc=function(){},Fc.prototype={},Object.defineProperties(Fc.prototype,{object:{get:function(){return this.node},set:function(a){this.node=a}}}));var c=new Fc,d;for(d in a)c[d]=a[d];a=c;b=dc(b);a.fd=b;return Q[b]=a}var Kb={open:function(a){a.ib=Qb[a.node.rdev].ib;a.ib.open&&a.ib.open(a)},sb:function(){throw new M(29);}};function Gb(a,b){Qb[a]={ib:b}}\nfunction Gc(a,b){var c=\"/\"===b,d=!b;if(c&&Pb)throw new M(16);if(!c&&!d){var e=U(b,{Tb:!1});b=e.path;e=e.node;if(e.wb)throw new M(16);if(!O(e.mode))throw new M(20);}b={type:a,Kb:{},Wb:b,oc:[]};a=a.mb(b);a.mb=b;b.root=a;c?Pb=a:e&&(e.wb=b,e.mb&&e.mb.oc.push(b))}function ea(a,b,c){var d=U(a,{parent:!0}).node;a=Ab(a);if(!a||\".\"===a||\"..\"===a)throw new M(22);var e=bc(d,a);if(e)throw new M(e);if(!d.fb.zb)throw new M(1);return d.fb.zb(d,a,b,c)}function V(a,b){ea(a,(void 0!==b?b:511)&1023|16384,0)}\nfunction Hc(a,b,c){\"undefined\"===typeof c&&(c=b,b=438);ea(a,b|8192,c)}function Ic(a,b){if(!Db(a))throw new M(2);var c=U(b,{parent:!0}).node;if(!c)throw new M(2);b=Ab(b);var d=bc(c,b);if(d)throw new M(d);if(!c.fb.symlink)throw new M(1);c.fb.symlink(c,b,a)}\nfunction sa(a){var b=U(a,{parent:!0}).node,c=Ab(a),d=Nb(b,c),e=cc(b,c,!1);if(e)throw new M(e);if(!b.fb.unlink)throw new M(1);if(d.wb)throw new M(16);try{T.willDeletePath&&T.willDeletePath(a)}catch(g){console.log(\"FS.trackingDelegate['willDeletePath']('\"+a+\"') threw an exception: \"+g.message)}b.fb.unlink(b,c);Xb(d);try{if(T.onDeletePath)T.onDeletePath(a)}catch(g){console.log(\"FS.trackingDelegate['onDeletePath']('\"+a+\"') threw an exception: \"+g.message)}}\nfunction Tb(a){a=U(a).node;if(!a)throw new M(2);if(!a.fb.readlink)throw new M(22);return Db(Ub(a.parent),a.fb.readlink(a))}function pa(a,b){a=U(a,{vb:!b}).node;if(!a)throw new M(2);if(!a.fb.ob)throw new M(1);return a.fb.ob(a)}function Jc(a){return pa(a,!0)}function fa(a,b){var c;\"string\"===typeof a?c=U(a,{vb:!0}).node:c=a;if(!c.fb.lb)throw new M(1);c.fb.lb(c,{mode:b&4095|c.mode&-4096,timestamp:Date.now()})}\nfunction Kc(a){var b;\"string\"===typeof a?b=U(a,{vb:!0}).node:b=a;if(!b.fb.lb)throw new M(1);b.fb.lb(b,{timestamp:Date.now()})}function Lc(a,b){if(0>b)throw new M(22);var c;\"string\"===typeof a?c=U(a,{vb:!0}).node:c=a;if(!c.fb.lb)throw new M(1);if(O(c.mode))throw new M(21);if(32768!==(c.mode&61440))throw new M(22);if(a=Yb(c,\"w\"))throw new M(a);c.fb.lb(c,{size:b,timestamp:Date.now()})}\nfunction p(a,b,c,d){if(\"\"===a)throw new M(2);if(\"string\"===typeof b){var e=$b[b];if(\"undefined\"===typeof e)throw Error(\"Unknown file open mode: \"+b);b=e}c=b&64?(\"undefined\"===typeof c?438:c)&4095|32768:0;if(\"object\"===typeof a)var g=a;else{a=vb(a);try{g=U(a,{vb:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(g){if(b&128)throw new M(17);}else g=ea(a,c,0),e=!0;if(!g)throw new M(2);8192===(g.mode&61440)&&(b&=-513);if(b&65536&&!O(g.mode))throw new M(20);if(!e&&(c=g?40960===(g.mode&61440)?40:O(g.mode)&&\n(\"r\"!==ac(b)||b&512)?21:Yb(g,ac(b)):2))throw new M(c);b&512&&Lc(g,0);b&=-641;d=uc({node:g,path:Ub(g),flags:b,seekable:!0,position:0,ib:g.ib,tc:[],error:!1},d);d.ib.open&&d.ib.open(d);!f.logReadFiles||b&1||(Mc||(Mc={}),a in Mc||(Mc[a]=1,console.log(\"FS.trackingDelegate error on read file: \"+a)));try{T.onOpenFile&&(g=0,1!==(b&2097155)&&(g|=1),0!==(b&2097155)&&(g|=2),T.onOpenFile(a,g))}catch(k){console.log(\"FS.trackingDelegate['onOpenFile']('\"+a+\"', flags) threw an exception: \"+k.message)}return d}\nfunction ia(a){if(null===a.fd)throw new M(9);a.Jb&&(a.Jb=null);try{a.ib.close&&a.ib.close(a)}catch(b){throw b;}finally{Q[a.fd]=null}a.fd=null}function Nc(a,b,c){if(null===a.fd)throw new M(9);if(!a.seekable||!a.ib.sb)throw new M(29);if(0!=c&&1!=c&&2!=c)throw new M(22);a.position=a.ib.sb(a,b,c);a.tc=[]}\nfunction qa(a,b,c,d,e){if(0>d||0>e)throw new M(22);if(null===a.fd)throw new M(9);if(1===(a.flags&2097155))throw new M(9);if(O(a.node.mode))throw new M(21);if(!a.ib.read)throw new M(22);var g=\"undefined\"!==typeof e;if(!g)e=a.position;else if(!a.seekable)throw new M(29);b=a.ib.read(a,b,c,d,e);g||(a.position+=b);return b}\nfunction ha(a,b,c,d,e,g){if(0>d||0>e)throw new M(22);if(null===a.fd)throw new M(9);if(0===(a.flags&2097155))throw new M(9);if(O(a.node.mode))throw new M(21);if(!a.ib.write)throw new M(22);a.flags&1024&&Nc(a,0,2);var k=\"undefined\"!==typeof e;if(!k)e=a.position;else if(!a.seekable)throw new M(29);b=a.ib.write(a,b,c,d,e,g);k||(a.position+=b);try{if(a.path&&T.onWriteToFile)T.onWriteToFile(a.path)}catch(m){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+a.path+\"') threw an exception: \"+m.message)}return b}\nfunction Oc(){M||(M=function(a,b){this.node=b;this.rc=function(a){this.hb=a};this.rc(a);this.message=\"FS error\"},M.prototype=Error(),M.prototype.constructor=M,[2].forEach(function(a){Mb[a]=new M(a);Mb[a].stack=\"\"}))}var Pc;function da(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c}\nfunction Qc(a,b,c){a=n(\"/dev\",a);var d=da(!!b,!!c);Rc||(Rc=64);var e=Rc++<<8|0;Gb(e,{open:function(a){a.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(a,c,d,e){for(var g=0,k=0;k>2]=d.dev;B[c+4>>2]=0;B[c+8>>2]=d.ino;B[c+12>>2]=d.mode;B[c+16>>2]=d.nlink;B[c+20>>2]=d.uid;B[c+24>>2]=d.gid;B[c+28>>2]=d.rdev;B[c+32>>2]=0;C=[d.size>>>0,(D=d.size,1<=+Na(D)?0>>0:~~+Qa((D-+(~~D>>>0))/4294967296)>>>0:0)];B[c+40>>2]=C[0];B[c+44>>2]=C[1];B[c+48>>2]=4096;B[c+52>>2]=d.blocks;B[c+56>>2]=d.atime.getTime()/1E3|0;B[c+60>>2]=0;B[c+64>>2]=d.mtime.getTime()/\n1E3|0;B[c+68>>2]=0;B[c+72>>2]=d.ctime.getTime()/1E3|0;B[c+76>>2]=0;C=[d.ino>>>0,(D=d.ino,1<=+Na(D)?0>>0:~~+Qa((D-+(~~D>>>0))/4294967296)>>>0:0)];B[c+80>>2]=C[0];B[c+84>>2]=C[1];return 0}var X=0;function Y(){X+=4;return B[X-4>>2]}function Z(){return G(Y())}function Uc(){var a=Q[Y()];if(!a)throw new M(9);return a}function Ja(){return l.length}\nfunction Vc(a){if(0===a)return 0;a=G(a);if(!L.hasOwnProperty(a))return 0;Vc.ub&&ca(Vc.ub);a=L[a];var b=la(a)+1,c=Ya(b);c&&t(a,l,c,b);Vc.ub=c;return Vc.ub}t(\"GMT\",F,60208,4);\nfunction Wc(){function a(a){return(a=a.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?a[1]:\"GMT\"}if(!Xc){Xc=!0;B[Yc()>>2]=60*(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);B[Zc()>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),e=a(c);d=ba(aa(d));e=ba(aa(e));c.getTimezoneOffset()>2]=d,B[$c()+4>>2]=e):(B[$c()>>2]=e,B[$c()+4>>2]=d)}}var Xc;\nfunction ad(a){a/=1E3;if((ya||x)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>>0);if(-9007199254740992>=a||9007199254740992<=a)return-75;Nc(c,a,k);C=[c.position>>>0,(D=c.position,1<=+Na(D)?0>>0:~~+Qa((D-+(~~D>>>0))/4294967296)>>>0:0)];B[g>>2]=C[0];B[g+4>>2]=C[1];c.Jb&&0===a&&0===k&&(c.Jb=null);return 0}catch(m){return\"undefined\"!==typeof W&&\nm instanceof M||z(m),-m.hb}},da:function(a,b){X=b;try{var c=Z(),d=Y();fa(c,d);return 0}catch(e){return\"undefined\"!==typeof W&&e instanceof M||z(e),-e.hb}},ca:function(a,b){X=b;try{var c=Y(),d=Y();if(0===d)return-22;if(dd?-22:p(c.path,c.flags,0,d).fd;case 1:case 2:return 0;case 3:return c.flags;case 4:return d=Y(),c.flags|=d,0;case 12:return d=Y(),Ma[d+0>>1]=2,0;case 13:case 14:return 0;\ncase 16:case 8:return-22;case 9:return Cb(22),-1;default:return-22}}catch(e){return\"undefined\"!==typeof W&&e instanceof M||z(e),-e.hb}},V:function(a,b){X=b;try{var c=Uc(),d=Y(),e=Y();return qa(c,l,d,e)}catch(g){return\"undefined\"!==typeof W&&g instanceof M||z(g),-g.hb}},U:function(a,b){X=b;try{var c=Z();var d=Y();if(d&-8)var e=-22;else{var g;(g=U(c,{vb:!0}).node)?(a=\"\",d&4&&(a+=\"r\"),d&2&&(a+=\"w\"),d&1&&(a+=\"x\"),e=a&&Yb(g,a)?-13:0):e=-2}return e}catch(k){return\"undefined\"!==typeof W&&k instanceof M||\nz(k),-k.hb}},T:function(a,b){X=b;try{var c=Z(),d=Y();a=c;a=vb(a);\"/\"===a[a.length-1]&&(a=a.substr(0,a.length-1));V(a,d);return 0}catch(e){return\"undefined\"!==typeof W&&e instanceof M||z(e),-e.hb}},S:function(a,b){X=b;try{var c=Uc(),d=Y(),e=Y();return ha(c,l,d,e)}catch(g){return\"undefined\"!==typeof W&&g instanceof M||z(g),-g.hb}},R:function(a,b){X=b;try{var c=Z(),d=U(c,{parent:!0}).node,e=Ab(c),g=Nb(d,e),k=cc(d,e,!0);if(k)throw new M(k);if(!d.fb.rmdir)throw new M(1);if(g.wb)throw new M(16);try{T.willDeletePath&&\nT.willDeletePath(c)}catch(m){console.log(\"FS.trackingDelegate['willDeletePath']('\"+c+\"') threw an exception: \"+m.message)}d.fb.rmdir(d,e);Xb(g);try{if(T.onDeletePath)T.onDeletePath(c)}catch(m){console.log(\"FS.trackingDelegate['onDeletePath']('\"+c+\"') threw an exception: \"+m.message)}return 0}catch(m){return\"undefined\"!==typeof W&&m instanceof M||z(m),-m.hb}},Q:function(a,b){X=b;try{var c=Z(),d=Y(),e=Y();return p(c,d,e).fd}catch(g){return\"undefined\"!==typeof W&&g instanceof M||z(g),-g.hb}},s:function(a,\nb){X=b;try{var c=Uc();ia(c);return 0}catch(d){return\"undefined\"!==typeof W&&d instanceof M||z(d),-d.hb}},P:function(a,b){X=b;try{var c=Z(),d=Y();var e=Y();if(0>=e)var g=-22;else{var k=Tb(c),m=Math.min(e,la(k)),r=l[d+m];t(k,F,d,e+1);l[d+m]=r;g=m}return g}catch(v){return\"undefined\"!==typeof W&&v instanceof M||z(v),-v.hb}},O:function(a,b){X=b;try{var c=Y(),d=Y();if(-1===c||0===d)var e=-22;else{var g=Sc[c];if(g&&d===g.mc){var k=Q[g.fd],m=g.flags,r=new Uint8Array(F.subarray(c,c+d));k&&k.ib.Eb&&k.ib.Eb(k,\nr,0,d,m);Sc[c]=null;g.Gb&&ca(g.nc)}e=0}return e}catch(v){return\"undefined\"!==typeof W&&v instanceof M||z(v),-v.hb}},N:function(a,b){X=b;try{var c=Y(),d=Y(),e=Q[c];if(!e)throw new M(9);fa(e.node,d);return 0}catch(g){return\"undefined\"!==typeof W&&g instanceof M||z(g),-g.hb}},M:Ja,L:function(a,b,c){F.set(F.subarray(b,b+c),a)},K:function(a){if(2147418112=b?b=$a(2*b):b=Math.min($a((3*b+2147483648)/4),2147418112);a:{try{E.grow(b-buffer.byteLength+\n65535>>16);ab(E.buffer);var c=1;break a}catch(d){}c=void 0}return c?!0:!1},r:Vc,q:function(a){var b=Date.now();B[a>>2]=b/1E3|0;B[a+4>>2]=b%1E3*1E3|0;return 0},J:function(a){return Math.log(a)/Math.LN10},p:function(){z(\"trap!\")},I:function(a){Wc();a=new Date(1E3*B[a>>2]);B[15040]=a.getSeconds();B[15041]=a.getMinutes();B[15042]=a.getHours();B[15043]=a.getDate();B[15044]=a.getMonth();B[15045]=a.getFullYear()-1900;B[15046]=a.getDay();var b=new Date(a.getFullYear(),0,1);B[15047]=(a.getTime()-b.getTime())/\n864E5|0;B[15049]=-(60*a.getTimezoneOffset());var c=(new Date(2E3,6,1)).getTimezoneOffset();b=b.getTimezoneOffset();a=(c!=b&&a.getTimezoneOffset()==Math.min(b,c))|0;B[15048]=a;a=B[$c()+(a?4:0)>>2];B[15050]=a;return 60160},H:function(a,b){if(0===a)return Cb(22),-1;var c=B[a>>2];a=B[a+4>>2];if(0>a||999999999c)return Cb(22),-1;0!==b&&(B[b>>2]=0,B[b+4>>2]=0);return ad(1E6*c+a/1E3)},G:function(a){switch(a){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;\ncase 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;\ncase 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return\"object\"===typeof navigator?navigator.hardwareConcurrency||1:1}Cb(22);return-1},\nF:function(a){var b=Date.now()/1E3|0;a&&(B[a>>2]=b);return b},E:function(a,b){if(b){var c=1E3*B[b+8>>2];c+=B[b+12>>2]/1E3}else c=Date.now();a=G(a);try{b=c;var d=U(a,{vb:!0}).node;d.fb.lb(d,{timestamp:Math.max(b,c)});return 0}catch(e){a=e;if(!(a instanceof M)){a+=\" : \";a:{d=Error();if(!d.stack){try{throw Error(0);}catch(g){d=g}if(!d.stack){d=\"(no stack trace available)\";break a}}d=d.stack.toString()}f.extraStackTrace&&(d+=\"\\n\"+f.extraStackTrace());d=sb(d);throw a+d;}Cb(a.hb);return-1}},D:function(){z(\"OOM\")},\na:Ia},buffer);f.asm=dd;f._RegisterExtensionFunctions=function(){return f.asm.ia.apply(null,arguments)};var qb=f.___emscripten_environ_constructor=function(){return f.asm.ja.apply(null,arguments)};f.___errno_location=function(){return f.asm.ka.apply(null,arguments)};\nvar Zc=f.__get_daylight=function(){return f.asm.la.apply(null,arguments)},Yc=f.__get_timezone=function(){return f.asm.ma.apply(null,arguments)},$c=f.__get_tzname=function(){return f.asm.na.apply(null,arguments)},ca=f._free=function(){return f.asm.oa.apply(null,arguments)},Ya=f._malloc=function(){return f.asm.pa.apply(null,arguments)},bd=f._memalign=function(){return f.asm.qa.apply(null,arguments)},cd=f._memset=function(){return f.asm.ra.apply(null,arguments)};\nf._sqlite3_bind_blob=function(){return f.asm.sa.apply(null,arguments)};f._sqlite3_bind_double=function(){return f.asm.ta.apply(null,arguments)};f._sqlite3_bind_int=function(){return f.asm.ua.apply(null,arguments)};f._sqlite3_bind_parameter_index=function(){return f.asm.va.apply(null,arguments)};f._sqlite3_bind_text=function(){return f.asm.wa.apply(null,arguments)};f._sqlite3_changes=function(){return f.asm.xa.apply(null,arguments)};f._sqlite3_clear_bindings=function(){return f.asm.ya.apply(null,arguments)};\nf._sqlite3_close_v2=function(){return f.asm.za.apply(null,arguments)};f._sqlite3_column_blob=function(){return f.asm.Aa.apply(null,arguments)};f._sqlite3_column_bytes=function(){return f.asm.Ba.apply(null,arguments)};f._sqlite3_column_double=function(){return f.asm.Ca.apply(null,arguments)};f._sqlite3_column_name=function(){return f.asm.Da.apply(null,arguments)};f._sqlite3_column_text=function(){return f.asm.Ea.apply(null,arguments)};f._sqlite3_column_type=function(){return f.asm.Fa.apply(null,arguments)};\nf._sqlite3_create_function_v2=function(){return f.asm.Ga.apply(null,arguments)};f._sqlite3_data_count=function(){return f.asm.Ha.apply(null,arguments)};f._sqlite3_errmsg=function(){return f.asm.Ia.apply(null,arguments)};f._sqlite3_exec=function(){return f.asm.Ja.apply(null,arguments)};f._sqlite3_finalize=function(){return f.asm.Ka.apply(null,arguments)};f._sqlite3_free=function(){return f.asm.La.apply(null,arguments)};f._sqlite3_open=function(){return f.asm.Ma.apply(null,arguments)};\nf._sqlite3_prepare_v2=function(){return f.asm.Na.apply(null,arguments)};f._sqlite3_reset=function(){return f.asm.Oa.apply(null,arguments)};f._sqlite3_result_blob=function(){return f.asm.Pa.apply(null,arguments)};f._sqlite3_result_double=function(){return f.asm.Qa.apply(null,arguments)};f._sqlite3_result_error=function(){return f.asm.Ra.apply(null,arguments)};f._sqlite3_result_int=function(){return f.asm.Sa.apply(null,arguments)};f._sqlite3_result_int64=function(){return f.asm.Ta.apply(null,arguments)};\nf._sqlite3_result_null=function(){return f.asm.Ua.apply(null,arguments)};f._sqlite3_result_text=function(){return f.asm.Va.apply(null,arguments)};f._sqlite3_step=function(){return f.asm.Wa.apply(null,arguments)};f._sqlite3_value_blob=function(){return f.asm.Xa.apply(null,arguments)};f._sqlite3_value_bytes=function(){return f.asm.Ya.apply(null,arguments)};f._sqlite3_value_double=function(){return f.asm.Za.apply(null,arguments)};f._sqlite3_value_int=function(){return f.asm._a.apply(null,arguments)};\nf._sqlite3_value_text=function(){return f.asm.$a.apply(null,arguments)};f._sqlite3_value_type=function(){return f.asm.ab.apply(null,arguments)};var h=f.stackAlloc=function(){return f.asm.cb.apply(null,arguments)},na=f.stackRestore=function(){return f.asm.db.apply(null,arguments)},ka=f.stackSave=function(){return f.asm.eb.apply(null,arguments)};f.dynCall_vi=function(){return f.asm.bb.apply(null,arguments)};f.asm=dd;\nf.cwrap=function(a,b,c,d){c=c||[];var e=c.every(function(a){return\"number\"===a});return\"string\"!==b&&e&&!d?Ua(a):function(){return Va(a,b,c,arguments)}};f.stackSave=ka;f.stackRestore=na;f.stackAlloc=h;var ed;kb=function fd(){ed||gd();ed||(kb=fd)};\nfunction gd(){function a(){if(!ed&&(ed=!0,!Ta)){hb=!0;f.noFSInit||Pc||(Pc=!0,Oc(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Qc(\"stdin\",f.stdin):Ic(\"/dev/tty\",\"/dev/stdin\"),f.stdout?Qc(\"stdout\",null,f.stdout):Ic(\"/dev/tty\",\"/dev/stdout\"),f.stderr?Qc(\"stderr\",null,f.stderr):Ic(\"/dev/tty1\",\"/dev/stderr\"),p(\"/dev/stdin\",\"r\"),p(\"/dev/stdout\",\"w\"),p(\"/dev/stderr\",\"w\"));cb(eb);Sb=!1;cb(fb);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for(\"function\"==typeof f.postRun&&\n(f.postRun=[f.postRun]);f.postRun.length;){var a=f.postRun.shift();gb.unshift(a)}cb(gb)}}if(!(0 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a