{"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