From e23f12bc89e233f6e8d79b641d7659b45f30b87d Mon Sep 17 00:00:00 2001 From: Gabriel-Tiberiu Imre-Lucaci Date: Mon, 25 Mar 2019 16:25:22 +0200 Subject: [PATCH] Full rewrite --- .gitignore | 5 +- config/rollup.config.common.js | 15 + config/rollup.config.dev.js | 17 + config/rollup.config.npm.js | 15 + config/rollup.config.prod.js | 8 + config/rollup.config.web.js | 16 + docs/Quiet.html | 2194 ------ docs/index.html | 138 - docs/quiet.js.html | 630 -- docs/scripts/linenumber.js | 17 - docs/scripts/prettify/Apache-License-2.0.txt | 202 - docs/scripts/prettify/lang-css.js | 2 - docs/scripts/prettify/prettify.js | 28 - docs/styles/jsdoc-default.css | 290 - docs/styles/prettify-jsdoc.css | 111 - docs/styles/prettify-tomorrow.css | 132 - example/index.html | 242 + example/quiet.js | 1 + examples/text/receivetext.html | 24 - examples/text/receivetext.js | 50 - examples/text/sendtext.html | 27 - examples/text/sendtext.js | 55 - package-lock.json | 6351 ++++++++++++++++++ package.json | 34 + quiet-emscripten.js | 20 - quiet-emscripten.js.mem | Bin 45051 -> 0 bytes quiet-profiles.json | 270 - quiet.js | 954 --- src/backend/constants.mjs | 4 + src/backend/generic.mjs | 95 + src/backend/index.mjs | 10 + src/backend/scriptprocessor.mjs | 60 + src/backend/worklet.mjs | 102 + src/helpers.mjs | 30 + src/index.mjs | 12 + src/processors/receive.mjs | 89 + src/processors/transmit.mjs | 97 + src/profiles.mjs | 283 + src/receiver.mjs | 57 + src/transmitter.mjs | 25 + 40 files changed, 7567 insertions(+), 5145 deletions(-) create mode 100644 config/rollup.config.common.js create mode 100644 config/rollup.config.dev.js create mode 100644 config/rollup.config.npm.js create mode 100644 config/rollup.config.prod.js create mode 100644 config/rollup.config.web.js delete mode 100644 docs/Quiet.html delete mode 100644 docs/index.html delete mode 100644 docs/quiet.js.html delete mode 100644 docs/scripts/linenumber.js delete mode 100644 docs/scripts/prettify/Apache-License-2.0.txt delete mode 100644 docs/scripts/prettify/lang-css.js delete mode 100644 docs/scripts/prettify/prettify.js delete mode 100644 docs/styles/jsdoc-default.css delete mode 100644 docs/styles/prettify-jsdoc.css delete mode 100644 docs/styles/prettify-tomorrow.css create mode 100644 example/index.html create mode 120000 example/quiet.js delete mode 100644 examples/text/receivetext.html delete mode 100644 examples/text/receivetext.js delete mode 100644 examples/text/sendtext.html delete mode 100644 examples/text/sendtext.js create mode 100644 package-lock.json create mode 100644 package.json delete mode 100644 quiet-emscripten.js delete mode 100644 quiet-emscripten.js.mem delete mode 100644 quiet-profiles.json delete mode 100644 quiet.js create mode 100644 src/backend/constants.mjs create mode 100644 src/backend/generic.mjs create mode 100644 src/backend/index.mjs create mode 100644 src/backend/scriptprocessor.mjs create mode 100644 src/backend/worklet.mjs create mode 100644 src/helpers.mjs create mode 100644 src/index.mjs create mode 100644 src/processors/receive.mjs create mode 100644 src/processors/transmit.mjs create mode 100644 src/profiles.mjs create mode 100644 src/receiver.mjs create mode 100644 src/transmitter.mjs diff --git a/.gitignore b/.gitignore index 19e4c1e..6823b30 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -libfec.js +node_modules +dist +src/libquiet +!.gitkeep \ No newline at end of file diff --git a/config/rollup.config.common.js b/config/rollup.config.common.js new file mode 100644 index 0000000..9a063c9 --- /dev/null +++ b/config/rollup.config.common.js @@ -0,0 +1,15 @@ + +import { string } from 'rollup-plugin-string' + +export default { + input: 'src/index.mjs', + plugins: [ + string( { + include: [ + 'src/libquiet/quiet.js', + 'src/processors/receive.mjs', + 'src/processors/transmit.mjs', + ] + } ) + ] +} \ No newline at end of file diff --git a/config/rollup.config.dev.js b/config/rollup.config.dev.js new file mode 100644 index 0000000..00aead9 --- /dev/null +++ b/config/rollup.config.dev.js @@ -0,0 +1,17 @@ + +import livereload from 'rollup-plugin-livereload' +import serve from 'rollup-plugin-serve' +import prod from './rollup.config.prod' +import web from './rollup.config.web' + +export default { + ... web, + plugins: [ + ... web.plugins.filter( plugin => ! prod.plugins.includes( plugin ) ), + serve( { + contentBase: 'example', + open: true, + } ), + livereload( 'dist' ) + ] +} \ No newline at end of file diff --git a/config/rollup.config.npm.js b/config/rollup.config.npm.js new file mode 100644 index 0000000..b7b9599 --- /dev/null +++ b/config/rollup.config.npm.js @@ -0,0 +1,15 @@ + +import common from './rollup.config.common' +import prod from './rollup.config.prod' + +export default { + ... common, + plugins: [ + ... common.plugins, + ... prod.plugins, + ], + output: { + file: 'dist/index.js', + format: 'cjs', + }, +} \ No newline at end of file diff --git a/config/rollup.config.prod.js b/config/rollup.config.prod.js new file mode 100644 index 0000000..5d72615 --- /dev/null +++ b/config/rollup.config.prod.js @@ -0,0 +1,8 @@ + +import minify from 'rollup-plugin-babel-minify' + +export default { + plugins: [ + minify( ), + ] +} diff --git a/config/rollup.config.web.js b/config/rollup.config.web.js new file mode 100644 index 0000000..1fbf23c --- /dev/null +++ b/config/rollup.config.web.js @@ -0,0 +1,16 @@ + +import common from './rollup.config.common' +import prod from './rollup.config.prod' + +export default { + ... common, + plugins: [ + ... common.plugins, + ... prod.plugins, + ], + output: { + file: 'dist/quiet.js', + format: 'iife', + name: 'Quiet', + }, +} \ No newline at end of file diff --git a/docs/Quiet.html b/docs/Quiet.html deleted file mode 100644 index 2f5f329..0000000 --- a/docs/Quiet.html +++ /dev/null @@ -1,2194 +0,0 @@ - - - - - JSDoc: Namespace: Quiet - - - - - - - - - - -
- -

Namespace: Quiet

- - - - - -
- -
-

- Quiet -

- -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - -
- - - - - - - - - - - - - - -

Methods

- -
- -
-

<static> ab2str(ab) → {string}

- - -
-
- - -
- Convert an array buffer in UTF8 to string -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ab - - -ArrayBuffer - - - - array buffer to be converted
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - -
Returns:
- - -
- s - converted string -
- - - -
-
- Type -
-
- -string - - -
-
- - - - -
- - - -
-

<static> addReadyCallback(c, onError)

- - -
-
- - -
- Add a callback to be called when Quiet is ready for use, e.g. when transmitters and receivers can be created. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeArgumentDescription
c - - -function - - - - - - - - - - The user function which will be called
onError - - -onError - - - - - - <optional>
- - - - - -
User errback function
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Example
- -
addReadyCallback(function() { console.log("ready!"); });
- - -
- - - -
-

<static> mergeab(ab1, ab2) → {ArrayBuffer}

- - -
-
- - -
- Merge 2 ArrayBuffers -This is a convenience function to assist user receiver functions that -want to aggregate multiple payloads. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ab1 - - -ArrayBuffer - - - - beginning ArrayBuffer
ab2 - - -ArrayBuffer - - - - ending ArrayBuffer
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - -
Returns:
- - -
- buf - ab1 merged with ab2 -
- - - -
-
- Type -
-
- -ArrayBuffer - - -
-
- - - - -
- - - -
-

<static> receiver(profile, onReceive, onCreateFail, onReceiveFail)

- - -
-
- - -
- Create a new receiver with the profile specified by profile (should match profile of transmitter). -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeArgumentDescription
profile - - -string - - - - - - - - - - name of profile to use, must be a key in quiet-profiles.json
onReceive - - -onReceive - - - - - - - - - - callback which receiver will call to send user received data
onCreateFail - - -onReceiverCreateFail - - - - - - <optional>
- - - - - -
callback to notify user that receiver could not be created
onReceiveFail - - -onReceiveFail - - - - - - <optional>
- - - - - -
callback to notify user that receiver received corrupted data
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Example
- -
receiver("robust", function(payload) { console.log("received chunk of data: " + Quiet.ab2str(payload)); });
- - -
- - - -
-

<static> setLibfecPrefix(prefix)

- - -
-
- - -
- Set the path prefix of libfec.js. -Although not strictly required, it is highly recommended to include this library. -

-This function, if used, must be called before quiet-emscripten.js has started loading. -If it is not called first, then emscripten will not load libfec.js. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
prefix - - -string - - - - The path prefix where emscripten will fetch libfec.js
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Example
- -
setLibfecPrefix("/");  // fetches /libfec.js
- - -
- - - -
-

<static> setMemoryInitializerPrefix(prefix)

- - -
-
- - -
- Set the path prefix of quiet-emscripten.js.mem. -This file is used to initialize the memory state of emscripten. -

-This function must be called before quiet-emscripten.js has started loading. -If it is not called first, then emscripten will default to a prefix of "". -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
prefix - - -string - - - - The path prefix where emscripten will fetch quiet-emscripten.js.mem
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Example
- -
setMemoryInitializerPrefix("/");  // fetches /quiet-emscripten.js.mem
- - -
- - - -
-

<static> setProfilesPrefix(prefix)

- - -
-
- - -
- Set the path prefix of quiet-profiles.json and do an async fetch of that path. -This file is used to configure transmitter and receiver parameters. -

-This function must be called before creating a transmitter or receiver. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
prefix - - -string - - - - The path prefix where Quiet will fetch quiet-profiles.json
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Example
- -
setProfilesPrefix("/js/");  // fetches /js/quiet-profiles.json
- - -
- - - -
-

<static> str2ab(s) → {ArrayBuffer}

- - -
-
- - -
- Convert a string to array buffer in UTF8 -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
s - - -string - - - - string to be converted
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - -
Returns:
- - -
- buf - converted arraybuffer -
- - - -
-
- Type -
-
- -ArrayBuffer - - -
-
- - - - -
- - - -
-

<static> transmitter(profile) → {transmit}

- - -
-
- - -
- Create a new transmitter configured by the given profile name. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
profile - - -string - - - - name of profile to use, must be a key in quiet-profiles.json
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - -
Returns:
- - -
- transmit - transmit callback which user calls to start transmission -
- - - -
-
- Type -
-
- -transmit - - -
-
- - - - -
Example
- -
var transmit = transmitter("robust");
-transmit(Quiet.str2ab("Hello, World!"), function() { console.log("transmission complete"); });
- - -
- -
- - - -

Type Definitions

- -
- -
-

onError(reason)

- - -
-
- - -
- Callback to notify user that quiet.js failed to initialize -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
reason - - -string - - - - error message related to failure
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
- - - -
-

onReceive(payload)

- - -
-
- - -
- Callback used by receiver to notify user of data received via microphone/line-in. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
payload - - -ArrayBuffer - - - - chunk of data received
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
- - - -
-

onReceiveFail(total)

- - -
-
- - -
- Callback used by receiver to notify user that a frame was received but -failed checksum. Frames that fail checksum are not sent to onReceive. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
total - - -number - - - - total number of frames failed across lifetime of receiver
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
- - - -
-

onReceiverCreateFail(reason)

- - -
-
- - -
- Callback used by receiver to notify user of errors in creating receiver. -This is a callback because frequently this will result when the user denies -permission to use the mic, which happens long after the call to create -the receiver. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
reason - - -string - - - - error message related to create fail
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
- - - -
-

onTransmitFinish()

- - -
-
- - -
- Callback used by transmit to notify user that transmission has finished -
- - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
- - - -
-

transmit(payload, done)

- - -
-
- - -
- Callback for user to provide data to a Quiet transmitter -

-This callback may be used multiple times, but the user must wait for the finished callback between subsequent calls. -
- - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeArgumentDescription
payload - - -ArrayBuffer - - - - - - - - - - bytes which will be encoded and sent to speaker
done - - -onTransmitFinish - - - - - - <optional>
- - - - - -
callback to notify user that transmission has completed
- - - -
- - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Example
- -
transmit(Quiet.str2ab("Hello, World!"), function() { console.log("transmission complete"); });
- - -
- -
- - - -
- -
- - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 82b9467..0000000 --- a/docs/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - JSDoc: Index - - - - - - - - - - -
- -

Index

- - - - - - - -

- - - - - - - - - - - - - - -
-

Quiet.js

-

Documentation

-

This is a javascript binding for libquiet, a library for sending and receiving data via sound card. It can function either via speaker or cable (e.g., 3.5mm). Quiet comes included with a few transmissions profiles which configure quiet's transmitter and receiver. For speaker transmission, there is a profile which transmits around the 19kHz range, which is essentially imperceptible to people (nearly ultrasonic). For transmission via cable, quiet.js has profiles which offer speeds of at least 40 kbps.

-

Try it out in this live example.

-

Compatibility

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BrowserTransmitterReceiver
ChromeSupportedSupported1
Chrome (Android)SupportedPartially Supported1,2
EdgeSupportedSupported
FirefoxSupportedPartially Supported3
Firefox (Android)SupportedPartially Supported2,3
Internet ExplorerNot SupportedNot Supported
SafariSupportedNot Supported4
Safari (iOS)SupportedNot Supported4
-

[1]: For Chrome receivers, the page must be delivered via https. Chrome does not support microphone input without TLS.

-

[2]: GMSK profiles only

-

[3]: Firefox's WebAudio implementation resamples audio input to 32kHz, which limits all audio received to 16kHz and below. This means the ultrasonic profile cannot be used for Firefox receivers. Additionally, the resampler used by Firefox produces strong audio distortion, which makes reception by some profiles difficult. However, the audible profiles work well. For the most recent information on this limitation, refer to Bug 953265.

-

[4]: Safari does not support getUserMedia or microphone input in any capacity.

-

Usage

-

The full documentation is available here.

-

Quiet-js includes a blob of libquiet compiled by emscripten as well as a javascript binding for ease of use. The bindings must be loaded before the compiled portion. Below is the recommended way to include Quiet in your project.

-
    <script type="text/javascript" src="quiet.js"></script>
-    <script type="text/javascript" src="your_project.js"></script>
-    <script async type="text/javascript" src="quiet-emscripten.js"></script>
-

Additionally, the emscripten compiled portion requires a memory initializer, quiet-emscripten.js.mem. This is loaded asynchronously by quiet-emscripten.js.

-

It is strongly recommended to also include libfec.js. An emscripten-compiled version of libfec may be found here or with npm install libfec. If libfec is not included, then quiet.js will not be able to use any profiles which use convolutional codes or Reed-Solomon error correction.

-

For a complete example demonstrating ultrasonic text transmission and reception, see this example.

-

License

-

Quiet and Quiet-js are licensed under 3-clause BSD. Quiet-js's emscripten-compiled output includes a statically-linked copies of liquid dsp and libjansson, both of which are licensed under the MIT license. For more information on Quiet-js's 3rd party licenses, consult LICENSE-3RD-PARTY.

-

Additionally, it is strongly recommended to link libfec (npm install libfec). libfec is licensed under LGPL. It is the intention of this project to adhere to the provisions of LGPL by dynamically linking libfec. However, neither this statement nor any other statements in these projects may be construed as legal advice from the author. It is solely the user's responsibility to ensure their own compliance with all applicable licenses.

-
- - - - - - -
- - - -
- - - - - - - \ No newline at end of file diff --git a/docs/quiet.js.html b/docs/quiet.js.html deleted file mode 100644 index 049fb6b..0000000 --- a/docs/quiet.js.html +++ /dev/null @@ -1,630 +0,0 @@ - - - - - JSDoc: Source: quiet.js - - - - - - - - - - -
- -

Source: quiet.js

- - - - - -
-
-
/* Copyright 2016, Brian Armstrong
- * quiet.js includes compiled portions from other sources
- *  - liquid DSP, Copyright (c) 2007-2016 Joseph Gaeddert
- *  - libjansson, Copyright (c) 2009-2016 Petri Lehtinen
- *  - emscripten, Copyright (c) 2010-2016 Emscripten authors
- */
-
-/** @namespace */
-var Quiet = (function() {
-    // sampleBufferSize is the number of audio samples we'll write per onaudioprocess call
-    // must be a power of two. we choose the absolute largest permissible value
-    // we implicitly assume that the browser will play back a written buffer without any gaps
-    var sampleBufferSize = 16384;
-
-    // initialization flags
-    var emscriptenInitialized = false;
-    var profilesFetched = false;
-
-    // profiles is the string content of quiet-profiles.json
-    var profiles;
-
-    // our local instance of window.AudioContext
-    var audioCtx;
-
-    // consumer callbacks. these fire once quiet is ready to create transmitter/receiver
-    var readyCallbacks = [];
-    var readyErrbacks = [];
-    var failReason = "";
-
-    // these are used for receiver only
-    var gUM;
-    var audioInput;
-    var audioInputFailedReason = "";
-    var audioInputReadyCallbacks = [];
-    var audioInputFailedCallbacks = [];
-    var frameBufferSize = Math.pow(2, 14);
-
-    // anti-gc
-    var receivers = [];
-
-    // isReady tells us if we can start creating transmitters and receivers
-    // we need the emscripten portion to be running and we need our
-    // async fetch of the profiles to be completed
-    function isReady() {
-        return emscriptenInitialized && profilesFetched;
-    };
-
-    function isFailed() {
-        return failReason !== "";
-    };
-
-    // start gets our AudioContext and notifies consumers that quiet can be used
-    function start() {
-        audioCtx = new (window.AudioContext || window.webkitAudioContext)();
-        console.log(audioCtx.sampleRate);
-        var len = readyCallbacks.length;
-        for (var i = 0; i < len; i++) {
-            readyCallbacks[i]();
-        }
-    };
-
-    function fail(reason) {
-        failReason = reason;
-        var len = readyErrbacks.length;
-        for (var i = 0; i < len; i++) {
-            readyErrbacks[i](reason);
-        }
-    };
-
-    function checkInitState() {
-        if (isReady()) {
-            start();
-        }
-    };
-
-    function onProfilesFetch(p) {
-        profiles = p;
-        profilesFetched = true;
-        checkInitState();
-    };
-
-    // this is intended to be called only by emscripten
-    function onEmscriptenInitialized() {
-        emscriptenInitialized = true;
-        checkInitState();
-    };
-
-    /**
-     * Set the path prefix of quiet-profiles.json and do an async fetch of that path.
-     * This file is used to configure transmitter and receiver parameters.
-     * <br><br>
-     * This function must be called before creating a transmitter or receiver.
-     * @function setProfilesPrefix
-     * @memberof Quiet
-     * @param {string} prefix - The path prefix where Quiet will fetch quiet-profiles.json
-     * @example
-     * setProfilesPrefix("/js/");  // fetches /js/quiet-profiles.json
-     */
-    function setProfilesPrefix(prefix) {
-        if (profilesFetched) {
-            return;
-        }
-        if (!prefix.endsWith("/")) {
-            prefix += "/";
-        }
-        var profilesPath = prefix + "quiet-profiles.json";
-
-        var fetch = new Promise(function(resolve, reject) {
-            var xhr = new XMLHttpRequest();
-            xhr.overrideMimeType("application/json");
-            xhr.open("GET", profilesPath, true);
-            xhr.onload = function() {
-                if (this.status >= 200 && this.status < 300) {
-                    resolve(this.responseText);
-                } else {
-                    reject(this.statusText);
-                }
-            };
-            xhr.onerror = function() {
-                reject(this.statusText);
-            };
-            xhr.send();
-        });
-
-        fetch.then(function(body) {
-            onProfilesFetch(body);
-        }, function(err) {
-            fail("fetch of quiet-profiles.json failed: " + err);
-        });
-    };
-
-    /**
-     * Set the path prefix of quiet-emscripten.js.mem.
-     * This file is used to initialize the memory state of emscripten.
-     * <br><br>
-     * This function must be called before quiet-emscripten.js has started loading.
-     * If it is not called first, then emscripten will default to a prefix of "".
-     * @function setMemoryInitializerPrefix
-     * @memberof Quiet
-     * @param {string} prefix - The path prefix where emscripten will fetch quiet-emscripten.js.mem
-     * @example
-     * setMemoryInitializerPrefix("/");  // fetches /quiet-emscripten.js.mem
-     */
-    function setMemoryInitializerPrefix(prefix) {
-        Module.memoryInitializerPrefixURL = prefix;
-    }
-
-    /**
-     * Set the path prefix of libfec.js.
-     * Although not strictly required, it is highly recommended to include this library.
-     * <br><br>
-     * This function, if used, must be called before quiet-emscripten.js has started loading.
-     * If it is not called first, then emscripten will not load libfec.js.
-     * @function setLibfecPrefix
-     * @memberof Quiet
-     * @param {string} prefix - The path prefix where emscripten will fetch libfec.js
-     * @example
-     * setLibfecPrefix("/");  // fetches /libfec.js
-     */
-    function setLibfecPrefix(prefix) {
-        Module.dynamicLibraries = Module.dynamicLibraries || [];
-        Module.dynamicLibraries.push(prefix + "libfec.js");
-    }
-
-    /**
-     * Callback to notify user that quiet.js failed to initialize
-     *
-     * @callback onError
-     * @memberof Quiet
-     * @param {string} reason - error message related to failure
-     */
-
-    /**
-     * Add a callback to be called when Quiet is ready for use, e.g. when transmitters and receivers can be created.
-     * @function addReadyCallback
-     * @memberof Quiet
-     * @param {function} c - The user function which will be called
-     * @param {onError} [onError] - User errback function
-     * @example
-     * addReadyCallback(function() { console.log("ready!"); });
-     */
-    function addReadyCallback(c, errback) {
-        if (isReady()) {
-            c();
-            return;
-        }
-        readyCallbacks.push(c);
-        if (errback !== undefined) {
-            if (isFailed()) {
-                errback(failReason);
-                return;
-            }
-            readyErrbacks.push(errback);
-        }
-    }
-
-    /**
-     * Callback used by transmit to notify user that transmission has finished
-     * @callback onTransmitFinish
-     * @memberof Quiet
-     */
-
-    /**
-     * Callback for user to provide data to a Quiet transmitter
-     * <br><br>
-     * This callback may be used multiple times, but the user must wait for the finished callback between subsequent calls.
-     * @callback transmit
-     * @memberof Quiet
-     * @param {ArrayBuffer} payload - bytes which will be encoded and sent to speaker
-     * @param {onTransmitFinish} [done] - callback to notify user that transmission has completed
-     * @example
-     * transmit(Quiet.str2ab("Hello, World!"), function() { console.log("transmission complete"); });
-     */
-
-    /**
-     * Create a new transmitter configured by the given profile name.
-     * @function transmitter
-     * @memberof Quiet
-     * @param {string} profile - name of profile to use, must be a key in quiet-profiles.json
-     * @returns {transmit} transmit - transmit callback which user calls to start transmission
-     * @example
-     * var transmit = transmitter("robust");
-     * transmit(Quiet.str2ab("Hello, World!"), function() { console.log("transmission complete"); });
-     */
-    function transmitter(profile) {
-        // get an encoder_options object for our quiet-profiles.json and profile key
-        var c_profiles = Module.intArrayFromString(profiles);
-        var c_profile = Module.intArrayFromString(profile);
-        var opt = Module.ccall('quiet_encoder_profile_str', 'pointer', ['array', 'array'], [c_profiles, c_profile]);
-
-        // libquiet internally works at 44.1kHz but the local sound card may be a different rate. we inform quiet about that here
-        var encoder = Module.ccall('quiet_encoder_create', 'pointer', ['pointer', 'number'], [opt, audioCtx.sampleRate]);
-
-        // some profiles have an option called close_frame which prevents data frames from overlapping multiple
-        //     sample buffers. this is very convenient if our system is not fast enough to feed the sound card
-        //     without any gaps between subsequent buffers due to e.g. gc pause. inform quiet about our
-        //     sample buffer size here so that it can reduce the frame length if this profile has close_frame enabled.
-        var frame_len = Module.ccall('quiet_encoder_clamp_frame_len', 'number', ['pointer', 'number'], [encoder, sampleBufferSize]);
-        var samples = Module.ccall('malloc', 'pointer', ['number'], [4 * sampleBufferSize]);
-
-        // return user transmit function
-        return function(buf, done) {
-            var payload = new Uint8Array(buf);
-            var payloadOffset = 0;
-
-            // fill as much of quiet's transmit queue as possible
-            var writebuf = function() {
-                if (payloadOffset == payload.length) {
-                    return;
-                }
-                for (var i = payloadOffset; i < payload.length; ) {
-                    var frame = payload.subarray(payloadOffset, payloadOffset + frame_len);
-                    var written = Module.ccall('quiet_encoder_send', 'number', ['pointer', 'array', 'number'], [encoder, frame, frame.length]);
-                    if (written === -1) {
-                        break;
-                    }
-                    payloadOffset += frame.length;
-                    i += frame.length;
-                }
-            };
-
-            writebuf();
-
-            // yes, this is pointer arithmetic, in javascript :)
-            var sample_view = Module.HEAPF32.subarray((samples/4), (samples/4) + sampleBufferSize);
-
-            var script_processor = (audioCtx.createScriptProcessor || audioCtx.createJavaScriptNode);
-            var transmitter = script_processor.call(audioCtx, sampleBufferSize, 1, 2);
-
-            var finished = false;
-            transmitter.onaudioprocess = function(e) {
-                var output_l = e.outputBuffer.getChannelData(0);
-
-                if (finished) {
-                    for (var i = 0; i < sampleBufferSize; i++) {
-                        output_l[i] = 0;
-                    }
-                    return;
-                }
-
-                var written = Module.ccall('quiet_encoder_emit', 'number', ['pointer', 'pointer', 'number'], [encoder, samples, sampleBufferSize]);
-                output_l.set(sample_view);
-
-                // libquiet notifies us that the payload is finished by returning written < number of samples we asked for
-                if (written < sampleBufferSize) {
-                    // be extra cautious and 0-fill what's left
-                    //   (we want the end of transmission to be silence, not potentially loud noise)
-                    for (var i = written; i < sampleBufferSize; i++) {
-                        output_l[i] = 0;
-                    }
-                    // user callback
-                    if (done !== undefined) {
-                            done();
-                    }
-                    finished = true;
-                    window.setTimeout(function() { transmitter.disconnect(); }, 1500);
-                }
-                window.setTimeout(writebuf, 0);
-            };
-
-            // put an input node on the graph. some browsers require this to run our script processor
-            // this oscillator will not actually be used in any way
-            var dummy_osc = audioCtx.createOscillator();
-            dummy_osc.type = 'square';
-            dummy_osc.frequency.value = 420;
-            dummy_osc.connect(transmitter);
-
-            transmitter.connect(audioCtx.destination);
-        };
-    };
-
-    // receiver functions
-
-    function audioInputReady() {
-        var len = audioInputReadyCallbacks.length;
-        for (var i = 0; i < len; i++) {
-            audioInputReadyCallbacks[i]();
-        }
-    };
-
-    function audioInputFailed(reason) {
-        audioInputFailedReason = reason;
-        var len = audioInputFailedCallbacks.length;
-        for (var i = 0; i < len; i++) {
-            audioInputFailedCallbacks[i](audioInputFailedReason);
-        }
-    };
-
-    function addAudioInputReadyCallback(c, errback) {
-        if (errback !== undefined) {
-            if (audioInputFailedReason !== "") {
-                errback(audioInputFailedReason);
-                return
-            }
-            audioInputFailedCallbacks.push(errback);
-        }
-        if (audioInput instanceof MediaStreamAudioSourceNode) {
-            c();
-            return
-        }
-        audioInputReadyCallbacks.push(c);
-    }
-
-    function gUMConstraints() {
-        if (navigator.webkitGetUserMedia !== undefined) {
-            return {
-                audio: {
-                    optional: [
-                      {googAutoGainControl: false},
-                      {googAutoGainControl2: false},
-                      {echoCancellation: false},
-                      {googEchoCancellation: false},
-                      {googEchoCancellation2: false},
-                      {googDAEchoCancellation: false},
-                      {googNoiseSuppression: false},
-                      {googNoiseSuppression2: false},
-                      {googHighpassFilter: false},
-                      {googTypingNoiseDetection: false},
-                      {googAudioMirroring: false}
-                    ]
-                }
-            };
-        }
-        if (navigator.mozGetUserMedia !== undefined) {
-            return {
-                audio: {
-                    echoCancellation: false,
-                    mozAutoGainControl: false,
-                    mozNoiseSuppression: false
-                }
-            };
-
-        }
-        return {
-            audio: {
-                echoCancellation: false
-            }
-        };
-    };
-
-
-    function createAudioInput() {
-        audioInput = 0; // prevent others from trying to create
-        gUM.call(navigator, gUMConstraints(),
-            function(e) {
-                audioInput = audioCtx.createMediaStreamSource(e);
-
-                // stash a very permanent reference so this isn't collected
-                window.quiet_receiver_anti_gc = audioInput;
-
-                audioInputReady();
-            }, function(reason) {
-                audioInputFailed(reason.name);
-        });
-    };
-
-    /**
-    * Callback used by receiver to notify user that a frame was received but
-    * failed checksum. Frames that fail checksum are not sent to onReceive.
-    *
-    * @callback onReceiveFail
-    * @memberof Quiet
-    * @param {number} total - total number of frames failed across lifetime of receiver
-    */
-
-    /**
-     * Callback used by receiver to notify user of errors in creating receiver.
-     * This is a callback because frequently this will result when the user denies
-     * permission to use the mic, which happens long after the call to create
-     * the receiver.
-     *
-     * @callback onReceiverCreateFail
-     * @memberof Quiet
-     * @param {string} reason - error message related to create fail
-    */
-
-    /**
-     * Callback used by receiver to notify user of data received via microphone/line-in.
-     *
-     * @callback onReceive
-     * @memberof Quiet
-     * @param {ArrayBuffer} payload - chunk of data received
-    */
-
-    /**
-     * Create a new receiver with the profile specified by profile (should match profile of transmitter).
-     * @function receiver
-     * @memberof Quiet
-     * @param {string} profile - name of profile to use, must be a key in quiet-profiles.json
-     * @param {onReceive} onReceive - callback which receiver will call to send user received data
-     * @param {onReceiverCreateFail} [onCreateFail] - callback to notify user that receiver could not be created
-     * @param {onReceiveFail} [onReceiveFail] - callback to notify user that receiver received corrupted data
-     * @example
-     * receiver("robust", function(payload) { console.log("received chunk of data: " + Quiet.ab2str(payload)); });
-     */
-    function receiver(profile, onReceive, onCreateFail, onReceiveFail) {
-        var c_profiles = Module.intArrayFromString(profiles);
-        var c_profile = Module.intArrayFromString(profile);
-        var opt = Module.ccall('quiet_decoder_profile_str', 'pointer', ['array', 'array'], [c_profiles, c_profile]);
-
-        // quiet creates audioCtx when it starts but it does not create an audio input
-        // getting microphone access requires a permission dialog so only ask for it if we need it
-        if (gUM === undefined) {
-            gUM = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia);
-        }
-
-        if (gUM === undefined) {
-            // we couldn't find a suitable getUserMedia, so fail fast
-            if (onCreateFail !== undefined) {
-                onCreateFail("getUserMedia undefined (mic not supported by browser)");
-            }
-            return;
-        }
-
-        if (audioInput === undefined) {
-            createAudioInput()
-        }
-
-        // TODO investigate if this still needs to be placed on window.
-        // seems this was done to keep it from being collected
-        var scriptProcessor = audioCtx.createScriptProcessor(16384, 2, 1);
-        receivers.push(scriptProcessor);
-
-        // inform quiet about our local sound card's sample rate so that it can resample to its internal sample rate
-        var decoder = Module.ccall('quiet_decoder_create', 'pointer', ['pointer', 'number'], [opt, audioCtx.sampleRate]);
-
-        var samples = Module.ccall('malloc', 'pointer', ['number'], [4 * sampleBufferSize]);
-
-        var frame = Module.ccall('malloc', 'pointer', ['number'], [frameBufferSize]);
-
-        var readbuf = function() {
-            while (true) {
-                var read = Module.ccall('quiet_decoder_recv', 'number', ['pointer', 'pointer', 'number'], [decoder, frame, frameBufferSize]);
-                if (read === -1) {
-                    break;
-                }
-                // convert from emscripten bytes to js string. more pointer arithmetic.
-                var frameArray = Module.HEAP8.slice(frame, frame + read);
-                onReceive(frameArray);
-            }
-        };
-
-        var lastChecksumFailCount = 0;
-        var consume = function() {
-            Module.ccall('quiet_decoder_consume', 'number', ['pointer', 'pointer', 'number'], [decoder, samples, sampleBufferSize]);
-
-            window.setTimeout(readbuf, 0);
-
-            var currentChecksumFailCount = Module.ccall('quiet_decoder_checksum_fails', 'number', ['pointer'], [decoder]);
-            if ((onReceiveFail !== undefined) && (currentChecksumFailCount > lastChecksumFailCount)) {
-                window.setTimeout(function() { onReceiveFail(currentChecksumFailCount); }, 0);
-            }
-            lastChecksumFailCount = currentChecksumFailCount;
-        }
-
-
-        scriptProcessor.onaudioprocess = function(e) {
-            var input = e.inputBuffer.getChannelData(0);
-            var sample_view = Module.HEAPF32.subarray(samples/4, samples/4 + sampleBufferSize);
-            sample_view.set(input);
-
-            window.setTimeout(consume, 0);
-        }
-
-        // if this is the first receiver object created, wait for our input node to be created
-        addAudioInputReadyCallback(function() {
-            audioInput.connect(scriptProcessor);
-        }, onCreateFail);
-
-        // more unused nodes in the graph that some browsers insist on having
-        var fakeGain = audioCtx.createGain();
-        fakeGain.value = 0;
-        scriptProcessor.connect(fakeGain);
-        fakeGain.connect(audioCtx.destination);
-    };
-
-    /**
-     * Convert a string to array buffer in UTF8
-     * @function str2ab
-     * @memberof Quiet
-     * @param {string} s - string to be converted
-     * @returns {ArrayBuffer} buf - converted arraybuffer
-     */
-    function str2ab(s) {
-        var s_utf8 = unescape(encodeURIComponent(s));
-        var buf = new ArrayBuffer(s_utf8.length);
-        var bufView = new Uint8Array(buf);
-        for (var i = 0; i < s_utf8.length; i++) {
-            bufView[i] = s_utf8.charCodeAt(i);
-        }
-        return buf;
-    };
-
-    /**
-     * Convert an array buffer in UTF8 to string
-     * @function ab2str
-     * @memberof Quiet
-     * @param {ArrayBuffer} ab - array buffer to be converted
-     * @returns {string} s - converted string
-     */
-    function ab2str(ab) {
-        return decodeURIComponent(escape(String.fromCharCode.apply(null, new Uint8Array(ab))));
-    };
-
-    /**
-     * Merge 2 ArrayBuffers
-     * This is a convenience function to assist user receiver functions that
-     * want to aggregate multiple payloads.
-     * @function mergeab
-     * @memberof Quiet
-     * @param {ArrayBuffer} ab1 - beginning ArrayBuffer
-     * @param {ArrayBuffer} ab2 - ending ArrayBuffer
-     * @returns {ArrayBuffer} buf - ab1 merged with ab2
-     */
-    function mergeab(ab1, ab2) {
-        var tmp = new Uint8Array(ab1.byteLength + ab2.byteLength);
-        tmp.set(new Uint8Array(ab1), 0);
-        tmp.set(new Uint8Array(ab2), ab1.byteLength);
-        return tmp.buffer;
-    };
-
-    return {
-        emscriptenInitialized: onEmscriptenInitialized,
-        setProfilesPrefix: setProfilesPrefix,
-        setMemoryInitializerPrefix: setMemoryInitializerPrefix,
-        setLibfecPrefix: setLibfecPrefix,
-        addReadyCallback: addReadyCallback,
-        transmitter: transmitter,
-        receiver: receiver,
-        str2ab: str2ab,
-        ab2str: ab2str,
-        mergeab: mergeab
-    };
-})();
-
-// extend emscripten Module
-var Module = {
-    onRuntimeInitialized: Quiet.emscriptenInitialized,
-    memoryInitializerPrefixURL: ""
-};
-
-
-
- - - - -
- - - -
- - - - - - - diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js deleted file mode 100644 index 613865d..0000000 --- a/docs/scripts/linenumber.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() { - var counter = 0; - var numbered; - var source = document.getElementsByClassName('prettyprint source'); - - if (source && source[0]) { - source = source[0].getElementsByTagName('code')[0]; - - numbered = source.innerHTML.split('\n'); - numbered = numbered.map(function(item) { - counter++; - return '' + item; - }); - - source.innerHTML = numbered.join('\n'); - } -})(); diff --git a/docs/scripts/prettify/Apache-License-2.0.txt b/docs/scripts/prettify/Apache-License-2.0.txt deleted file mode 100644 index d645695..0000000 --- a/docs/scripts/prettify/Apache-License-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js deleted file mode 100644 index 041e1f5..0000000 --- a/docs/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js deleted file mode 100644 index eef5ad7..0000000 --- a/docs/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p + + + QuietJS + + + +
+ + +
+
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/example/quiet.js b/example/quiet.js new file mode 120000 index 0000000..ace5f6f --- /dev/null +++ b/example/quiet.js @@ -0,0 +1 @@ +../dist/quiet.js \ No newline at end of file diff --git a/examples/text/receivetext.html b/examples/text/receivetext.html deleted file mode 100644 index d26c17c..0000000 --- a/examples/text/receivetext.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Receive Text - - - - - - - -
-
-

Receive Text

-
-
- -
Your received text will show up here. Waiting...
-
-
- - diff --git a/examples/text/receivetext.js b/examples/text/receivetext.js deleted file mode 100644 index da43280..0000000 --- a/examples/text/receivetext.js +++ /dev/null @@ -1,50 +0,0 @@ -var TextReceiver = (function() { - Quiet.init({ - profilesPrefix: "/", - memoryInitializerPrefix: "/", - libfecPrefix: "/" - }); - var target; - var content = new ArrayBuffer(0); - var warningbox; - - function onReceive(recvPayload) { - content = Quiet.mergeab(content, recvPayload); - target.textContent = Quiet.ab2str(content); - warningbox.classList.add("hidden"); - }; - - function onReceiverCreateFail(reason) { - console.log("failed to create quiet receiver: " + reason); - warningbox.classList.remove("hidden"); - warningbox.textContent = "Sorry, it looks like this example is not supported by your browser. Please give permission to use the microphone or try again in Google Chrome or Microsoft Edge." - }; - - function onReceiveFail(num_fails) { - warningbox.classList.remove("hidden"); - warningbox.textContent = "We didn't quite get that. It looks like you tried to transmit something. You may need to move the transmitter closer to the receiver and set the volume to 50%." - }; - - function onQuietReady() { - var profilename = document.querySelector('[data-quiet-profile-name]').getAttribute('data-quiet-profile-name'); - Quiet.receiver({profile: profilename, - onReceive: onReceive, - onCreateFail: onReceiverCreateFail, - onReceiveFail: onReceiveFail - }); - }; - - function onQuietFail(reason) { - console.log("quiet failed to initialize: " + reason); - warningbox.classList.remove("hidden"); - warningbox.textContent = "Sorry, it looks like there was a problem with this example (" + reason + ")"; - }; - - function onDOMLoad() { - target = document.querySelector('[data-quiet-receive-text-target]'); - warningbox = document.querySelector('[data-quiet-warning]'); - Quiet.addReadyCallback(onQuietReady, onQuietFail); - }; - - document.addEventListener("DOMContentLoaded", onDOMLoad); -})(); diff --git a/examples/text/sendtext.html b/examples/text/sendtext.html deleted file mode 100644 index 667ed66..0000000 --- a/examples/text/sendtext.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Send Text - - - - - - - -
-
-

Send Text

-
-
- -
- -
- -
-
- - diff --git a/examples/text/sendtext.js b/examples/text/sendtext.js deleted file mode 100644 index 0af7feb..0000000 --- a/examples/text/sendtext.js +++ /dev/null @@ -1,55 +0,0 @@ -var TextTransmitter = (function() { - Quiet.init({ - profilesPrefix: "/", - memoryInitializerPrefix: "/", - libfecPrefix: "/" - }); - var btn; - var textbox; - var warningbox; - var transmit; - - function onTransmitFinish() { - textbox.focus(); - btn.addEventListener('click', onClick, false); - btn.disabled = false; - var originalText = btn.innerText; - btn.innerText = btn.getAttribute('data-quiet-sending-text'); - btn.setAttribute('data-quiet-sending-text', originalText); - }; - - function onClick(e) { - e.target.removeEventListener(e.type, arguments.callee); - e.target.disabled = true; - var originalText = e.target.innerText; - e.target.innerText = e.target.getAttribute('data-quiet-sending-text'); - e.target.setAttribute('data-quiet-sending-text', originalText); - var payload = textbox.value; - if (payload === "") { - onTransmitFinish(); - return; - } - transmit.transmit(Quiet.str2ab(payload)); - }; - - function onQuietReady() { - var profilename = document.querySelector('[data-quiet-profile-name]').getAttribute('data-quiet-profile-name'); - transmit = Quiet.transmitter({profile: profilename, onFinish: onTransmitFinish}); - btn.addEventListener('click', onClick, false); - }; - - function onQuietFail(reason) { - console.log("quiet failed to initialize: " + reason); - warningbox.classList.remove("hidden"); - warningbox.textContent = "Sorry, it looks like there was a problem with this example (" + reason + ")"; - }; - - function onDOMLoad() { - btn = document.querySelector('[data-quiet-send-button]'); - textbox = document.querySelector('[data-quiet-text-input]'); - warningbox = document.querySelector('[data-quiet-warning]'); - Quiet.addReadyCallback(onQuietReady, onQuietFail); - }; - - document.addEventListener("DOMContentLoaded", onDOMLoad); -})(); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..879be8d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6351 @@ +{ + "name": "quiet-js", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz", + "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.3.4", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.3.4", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.3.4", + "@babel/types": "^7.3.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz", + "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helpers": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "dev": true, + "requires": { + "@babel/template": "^7.1.2", + "@babel/traverse": "^7.1.5", + "@babel/types": "^7.3.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz", + "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==", + "dev": true + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz", + "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.3.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.3.4", + "@babel/types": "^7.3.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz", + "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "@comandeer/babel-plugin-banner": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@comandeer/babel-plugin-banner/-/babel-plugin-banner-4.1.0.tgz", + "integrity": "sha512-9hKVIN2+maygxkngnXDsZXRZqCYDY4pxIRljJqqJ5A+eJZzW3k/NZj5lixEmStjWFjlPlOHGYBytBehpf0l+hA==", + "dev": true + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.10.5.tgz", + "integrity": "sha512-DuIRlQbX4K+d5I+GMnv+UfnGh+ist0RdlvOp+JZ7ePJ6KQONCFQv/gKYSU1ZzbVdFSUCKZOltjmpFAGGv5MdYA==", + "dev": true + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "dev": true + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-helper-evaluate-path": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", + "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", + "dev": true + }, + "babel-helper-flip-expressions": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", + "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", + "dev": true + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", + "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", + "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", + "dev": true + }, + "babel-helper-remove-or-void": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", + "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", + "dev": true + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", + "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", + "dev": true + }, + "babel-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.1.0.tgz", + "integrity": "sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.1.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz", + "integrity": "sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.0.0", + "test-exclude": "^5.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz", + "integrity": "sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw==", + "dev": true + }, + "babel-plugin-minify-builtins": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", + "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", + "dev": true + }, + "babel-plugin-minify-constant-folding": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", + "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.0.tgz", + "integrity": "sha512-XQteBGXlgEoAKc/BhO6oafUdT4LBa7ARi55mxoyhLHNuA+RlzRmeMAfc31pb/UqU01wBzRc36YqHQzopnkd/6Q==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-mark-eval-scopes": "^0.4.3", + "babel-helper-remove-or-void": "^0.4.3", + "lodash.some": "^4.6.0" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", + "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.3.tgz", + "integrity": "sha1-zHCbRFP9IbHzAod0RMifiEJ845c=", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "^0.4.3" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", + "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", + "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "^0.4.3" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", + "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", + "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.0.tgz", + "integrity": "sha512-TM01J/YcKZ8XIQd1Z3nF2AdWHoDsarjtZ5fWPDksYZNsoOjQ2UO2EWm824Ym6sp127m44gPlLFiO5KFxU8pA5Q==", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "^0.4.3", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.5.0" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", + "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", + "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", + "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", + "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", + "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "dev": true + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", + "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", + "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", + "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", + "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", + "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", + "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", + "dev": true + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", + "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "dev": true + }, + "babel-preset-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz", + "integrity": "sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.1.0" + } + }, + "babel-preset-minify": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz", + "integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.5.0", + "babel-plugin-minify-constant-folding": "^0.5.0", + "babel-plugin-minify-dead-code-elimination": "^0.5.0", + "babel-plugin-minify-flip-comparisons": "^0.4.3", + "babel-plugin-minify-guarded-expressions": "^0.4.3", + "babel-plugin-minify-infinity": "^0.4.3", + "babel-plugin-minify-mangle-names": "^0.5.0", + "babel-plugin-minify-numeric-literals": "^0.4.3", + "babel-plugin-minify-replace": "^0.5.0", + "babel-plugin-minify-simplify": "^0.5.0", + "babel-plugin-minify-type-constructors": "^0.4.3", + "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", + "babel-plugin-transform-member-expression-literals": "^6.9.4", + "babel-plugin-transform-merge-sibling-variables": "^6.9.4", + "babel-plugin-transform-minify-booleans": "^6.9.4", + "babel-plugin-transform-property-literals": "^6.9.4", + "babel-plugin-transform-regexp-constructors": "^0.4.3", + "babel-plugin-transform-remove-console": "^6.9.4", + "babel-plugin-transform-remove-debugger": "^6.9.4", + "babel-plugin-transform-remove-undefined": "^0.5.0", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", + "babel-plugin-transform-undefined-to-void": "^6.9.4", + "lodash.isplainobject": "^4.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "callsites": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "dev": true + }, + "camelcase": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true, + "optional": true + }, + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cp-file": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.1.0.tgz", + "integrity": "sha512-an34I0lJwKncRKjxe3uGWUuiIIVYsHHjBGKld3OQB56hfoPCYom31VysvfuysKqHLbz6drnqP5YrCfLw17I2kw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "cpy": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-7.1.0.tgz", + "integrity": "sha512-HT6xnKeHwACUObD3LEFAsjeQ9IUVhC1Pn6Qbk0q6CEWy0WG061khT3ZxQU6IuMXPEEyb+vvluyUOyTdl+9EPWQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "cp-file": "^6.1.0", + "globby": "^9.1.0", + "nested-error-stacks": "^2.0.0" + } + }, + "cpy-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-2.0.0.tgz", + "integrity": "sha512-LzrtY3lBWvFZcw4lXgkEbbDUd7y78juC3C5l7gj3UyezMEZF0Be9fjCVLN1HoZAzdMDeC3KHehWpHBJvgVAPkw==", + "dev": true, + "requires": { + "cpy": "^7.0.0", + "meow": "^5.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", + "dev": true + }, + "cssstyle": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", + "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.0.0.tgz", + "integrity": "sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw==", + "dev": true + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expect": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.1.0.tgz", + "integrity": "sha512-lVcAPhaYkQcIyMS+F8RVwzbm1jro20IG8OkvxQ6f1JfqhVZyyudCwYogQ7wnktlf14iF3ii7ArIUO/mqvrW9Gw==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "jest-message-util": "^24.0.0", + "jest-regex-util": "^24.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", + "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", + "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", + "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", + "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true + }, + "globby": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.1.0.tgz", + "integrity": "sha512-VtYjhHr7ncls724Of5W6Kaahz0ag7dB4G62/2HsN+xEKG6SrPzM1AJMerGxQTwJGnN9reeyxdvXbuZYpfssCvg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.1", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz", + "integrity": "sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.1.tgz", + "integrity": "sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.1.0", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.1", + "js-yaml": "^3.12.0", + "make-dir": "^1.3.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", + "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", + "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.3", + "semver": "^5.5.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", + "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", + "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz", + "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==", + "dev": true, + "requires": { + "handlebars": "^4.1.0" + } + }, + "jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.1.0.tgz", + "integrity": "sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.1.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.1.0.tgz", + "integrity": "sha512-U/iyWPwOI0T1CIxVLtk/2uviOTJ/OiSWJSe8qt6X1VkbbgP+nrtLJlmT9lPBe4lK78VNFJtrJ7pttcNv/s7yCw==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.15", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "istanbul-api": "^2.0.8", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-source-maps": "^3.0.1", + "jest-changed-files": "^24.0.0", + "jest-config": "^24.1.0", + "jest-environment-jsdom": "^24.0.0", + "jest-get-type": "^24.0.0", + "jest-haste-map": "^24.0.0", + "jest-message-util": "^24.0.0", + "jest-regex-util": "^24.0.0", + "jest-resolve-dependencies": "^24.1.0", + "jest-runner": "^24.1.0", + "jest-runtime": "^24.1.0", + "jest-snapshot": "^24.1.0", + "jest-util": "^24.0.0", + "jest-validate": "^24.0.0", + "jest-watcher": "^24.0.0", + "jest-worker": "^24.0.0", + "micromatch": "^3.1.10", + "node-notifier": "^5.2.1", + "p-each-series": "^1.0.0", + "pirates": "^4.0.0", + "prompts": "^2.0.1", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^5.0.0", + "which": "^1.2.12", + "yargs": "^12.0.2" + } + } + } + }, + "jest-changed-files": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.0.0.tgz", + "integrity": "sha512-nnuU510R9U+UX0WNb5XFEcsrMqriSiRLeO9KWDFgPrpToaQm60prfQYpxsXigdClpvNot5bekDY440x9dNGnsQ==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.1.0.tgz", + "integrity": "sha512-FbbRzRqtFC6eGjG5VwsbW4E5dW3zqJKLWYiZWhB0/4E5fgsMw8GODLbGSrY5t17kKOtCWb/Z7nsIThRoDpuVyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "babel-jest": "^24.1.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.0.0", + "jest-environment-node": "^24.0.0", + "jest-get-type": "^24.0.0", + "jest-jasmine2": "^24.1.0", + "jest-regex-util": "^24.0.0", + "jest-resolve": "^24.1.0", + "jest-util": "^24.0.0", + "jest-validate": "^24.0.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.0.0", + "realpath-native": "^1.0.2" + } + }, + "jest-diff": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.0.0.tgz", + "integrity": "sha512-XY5wMpRaTsuMoU+1/B2zQSKQ9RdE9gsLkGydx3nvApeyPijLA8GtEvIcPwISRCer+VDf9W1mStTYYq6fPt8ryA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.0.0", + "jest-get-type": "^24.0.0", + "pretty-format": "^24.0.0" + } + }, + "jest-docblock": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.0.0.tgz", + "integrity": "sha512-KfAKZ4SN7CFOZpWg4i7g7MSlY0M+mq7K0aMqENaG2vHuhC9fc3vkpU/iNN9sOus7v3h3Y48uEjqz3+Gdn2iptA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.0.0.tgz", + "integrity": "sha512-gFcbY4Cu55yxExXMkjrnLXov3bWO3dbPAW7HXb31h/DNWdNc/6X8MtxGff8nh3/MjkF9DpVqnj0KsPKuPK0cpA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^24.0.0", + "jest-util": "^24.0.0", + "pretty-format": "^24.0.0" + } + }, + "jest-environment-jsdom": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz", + "integrity": "sha512-1YNp7xtxajTRaxbylDc2pWvFnfDTH5BJJGyVzyGAKNt/lEULohwEV9zFqTgG4bXRcq7xzdd+sGFws+LxThXXOw==", + "dev": true, + "requires": { + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.0.0.tgz", + "integrity": "sha512-62fOFcaEdU0VLaq8JL90TqwI7hLn0cOKOl8vY2n477vRkCJRojiRRtJVRzzCcgFvs6gqU97DNqX5R0BrBP6Rxg==", + "dev": true, + "requires": { + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0" + } + }, + "jest-get-type": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.0.0.tgz", + "integrity": "sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w==", + "dev": true + }, + "jest-haste-map": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.0.0.tgz", + "integrity": "sha512-CcViJyUo41IQqttLxXVdI41YErkzBKbE6cS6dRAploCeutePYfUimWd3C9rQEWhX0YBOQzvNsC0O9nYxK2nnxQ==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.0.0", + "jest-util": "^24.0.0", + "jest-worker": "^24.0.0", + "micromatch": "^3.1.10", + "sane": "^3.0.0" + } + }, + "jest-jasmine2": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz", + "integrity": "sha512-H+o76SdSNyCh9fM5K8upK45YTo/DiFx5w2YAzblQebSQmukDcoVBVeXynyr7DDnxh+0NTHYRCLwJVf3tC518wg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.1.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "jest-message-util": "^24.0.0", + "jest-snapshot": "^24.1.0", + "jest-util": "^24.0.0", + "pretty-format": "^24.0.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz", + "integrity": "sha512-ZYHJYFeibxfsDSKowjDP332pStuiFT2xfc5R67Rjm/l+HFJWJgNIOCOlQGeXLCtyUn3A23+VVDdiCcnB6dTTrg==", + "dev": true, + "requires": { + "pretty-format": "^24.0.0" + } + }, + "jest-matcher-utils": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz", + "integrity": "sha512-LQTDmO+aWRz1Tf9HJg+HlPHhDh1E1c65kVwRFo5mwCVp5aQDzlkz4+vCvXhOKFjitV2f0kMdHxnODrXVoi+rlA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.0.0", + "jest-get-type": "^24.0.0", + "pretty-format": "^24.0.0" + } + }, + "jest-message-util": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.0.0.tgz", + "integrity": "sha512-J9ROJIwz/IeC+eV1XSwnRK4oAwPuhmxEyYx1+K5UI+pIYwFZDSrfZaiWTdq0d2xYFw4Xiu+0KQWsdsQpgJMf3Q==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.0.0.tgz", + "integrity": "sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A==", + "dev": true + }, + "jest-regex-util": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.0.0.tgz", + "integrity": "sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q==", + "dev": true + }, + "jest-resolve": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.1.0.tgz", + "integrity": "sha512-TPiAIVp3TG6zAxH28u/6eogbwrvZjBMWroSLBDkwkHKrqxB/RIdwkWDye4uqPlZIXWIaHtifY3L0/eO5Z0f2wg==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz", + "integrity": "sha512-2VwPsjd3kRPu7qe2cpytAgowCObk5AKeizfXuuiwgm1a9sijJDZe8Kh1sFj6FKvSaNEfCPlBVkZEJa2482m/Uw==", + "dev": true, + "requires": { + "jest-regex-util": "^24.0.0", + "jest-snapshot": "^24.1.0" + } + }, + "jest-runner": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.1.0.tgz", + "integrity": "sha512-CDGOkT3AIFl16BLL/OdbtYgYvbAprwJ+ExKuLZmGSCSldwsuU2dEGauqkpvd9nphVdAnJUcP12e/EIlnTX0QXg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.1.0", + "jest-docblock": "^24.0.0", + "jest-haste-map": "^24.0.0", + "jest-jasmine2": "^24.1.0", + "jest-leak-detector": "^24.0.0", + "jest-message-util": "^24.0.0", + "jest-runtime": "^24.1.0", + "jest-util": "^24.0.0", + "jest-worker": "^24.0.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.1.0.tgz", + "integrity": "sha512-59/BY6OCuTXxGeDhEMU7+N33dpMQyXq7MLK07cNSIY/QYt2QZgJ7Tjx+rykBI0skAoigFl0A5tmT8UdwX92YuQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.1.0", + "jest-haste-map": "^24.0.0", + "jest-message-util": "^24.0.0", + "jest-regex-util": "^24.0.0", + "jest-resolve": "^24.1.0", + "jest-snapshot": "^24.1.0", + "jest-util": "^24.0.0", + "jest-validate": "^24.0.0", + "micromatch": "^3.1.10", + "realpath-native": "^1.0.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "write-file-atomic": "2.4.1", + "yargs": "^12.0.2" + } + }, + "jest-serializer": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.0.0.tgz", + "integrity": "sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw==", + "dev": true + }, + "jest-snapshot": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.1.0.tgz", + "integrity": "sha512-th6TDfFqEmXvuViacU1ikD7xFb7lQsPn2rJl7OEmnfIVpnrx3QNY2t3PE88meeg0u/mQ0nkyvmC05PBqO4USFA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "chalk": "^2.0.1", + "jest-diff": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "jest-message-util": "^24.0.0", + "jest-resolve": "^24.1.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.0.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.0.0.tgz", + "integrity": "sha512-QxsALc4wguYS7cfjdQSOr5HTkmjzkHgmZvIDkcmPfl1ib8PNV8QUWLwbKefCudWS0PRKioV+VbQ0oCUPC691fQ==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "jest-message-util": "^24.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.0.0.tgz", + "integrity": "sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.0.0", + "leven": "^2.1.0", + "pretty-format": "^24.0.0" + } + }, + "jest-watcher": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.0.0.tgz", + "integrity": "sha512-GxkW2QrZ4YxmW1GUWER05McjVDunBlKMFfExu+VsGmXJmpej1saTEKvONdx5RJBlVdpPI5x6E3+EDQSIGgl53g==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.0.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.0.0.tgz", + "integrity": "sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz", + "integrity": "sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "livereload": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.7.0.tgz", + "integrity": "sha512-PHnIGczQEvmCctDvRTWylA+1wSwE0/eFm+LkNhlmlAFus/aCRlVE97UOLOf6TUGLmZyfg7z7twG37ZiOgNJAyQ==", + "dev": true, + "requires": { + "chokidar": "^1.7.0", + "opts": ">= 1.2.0", + "ws": "^1.1.5" + }, + "dependencies": { + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dev": true, + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "mem": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "merge2": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", + "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "~1.38.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", + "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.1.tgz", + "integrity": "sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "opts": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/opts/-/opts-1.2.6.tgz", + "integrity": "sha1-0YXAQlz9652h0YKQi2W1wCOP67M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-exists-cli": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists-cli/-/path-exists-cli-1.0.0.tgz", + "integrity": "sha1-tQtxJtB54khi4JKg0GDrHIL2S8M=", + "dev": true, + "requires": { + "meow": "^3.7.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.0.0.tgz", + "integrity": "sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "prompts": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.3.tgz", + "integrity": "sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ==", + "dev": true, + "requires": { + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" + } + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.8.0.tgz", + "integrity": "sha512-dKxL6ihUZ9YrVySKf/LBz5joW2sqwWkiuki34279Ppr2cL+O6Za6Ujovk+rtTX0AFCIsH1rs6y8LYKdZZ/7C5A==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "^11.11.6", + "acorn": "^6.1.1" + }, + "dependencies": { + "@types/node": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz", + "integrity": "sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==", + "dev": true + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "rollup-plugin-babel-minify": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel-minify/-/rollup-plugin-babel-minify-8.0.0.tgz", + "integrity": "sha512-w9bGqvFAFX4IzCqVNtE97tfZdfi2zT1O9uDUDjWa4bLzkQl+vg39abR+z7cXlDP4T7vfvUmHWRlUtZHr/cRjDQ==", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@comandeer/babel-plugin-banner": "^4.0.0", + "babel-preset-minify": "^0.5.0", + "sourcemap-codec": "^1.4.3" + } + }, + "rollup-plugin-legacy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-legacy/-/rollup-plugin-legacy-1.0.0.tgz", + "integrity": "sha1-0IvfxEEL0Tgn9CeMUYcNPY29HqM=", + "dev": true, + "requires": { + "rollup-pluginutils": "^1.5.2" + } + }, + "rollup-plugin-livereload": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.0.0.tgz", + "integrity": "sha512-73vtOWMcQEOKyk5jgDTEFYGf4d4GWraDt/onTiauE7WALAO+6nIWKD7p47yDiCiz/pTOKvh38SQ2HZ8KkpaNew==", + "dev": true, + "requires": { + "livereload": "^0.7.0" + } + }, + "rollup-plugin-serve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-serve/-/rollup-plugin-serve-1.0.1.tgz", + "integrity": "sha512-bni0pb4s1YLvn1xBmj+dH1OsLdp8gWA4zqh3yuEtT6/YHhg3nDneGU2GwMcRDQwY2tXzuI0uSeAlF1rY+ODitg==", + "dev": true, + "requires": { + "mime": ">=2.0.3", + "opener": "1" + } + }, + "rollup-plugin-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-string/-/rollup-plugin-string-3.0.0.tgz", + "integrity": "sha512-vqyzgn9QefAgeKi+Y4A7jETeIAU1zQmS6VotH6bzm/zmUQEnYkpIGRaOBPY41oiWYV4JyBoGAaBjYMYuv+6wVw==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.4.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", + "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "dev": true + }, + "rollup-pluginutils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz", + "integrity": "sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw==", + "dev": true, + "requires": { + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" + } + } + } + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "^0.2.1", + "minimatch": "^3.0.2" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-3.1.0.tgz", + "integrity": "sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sisteransi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", + "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "test-exclude": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz", + "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..423eb7b --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "quiet-js", + "version": "1.0.0", + "description": "Quiet.js", + "main": "dist/index.js", + "scripts": { + "prebuild": "node_modules/path-exists-cli/cli.js src/libquiet/quiet.js || docker run -v ${PWD}/src/libquiet:/dist quiet-js-build", + "build": "rollup -c config/rollup.config.npm.js", + "build-web": "rollup -c config/rollup.config.web.js && node_modules/cpy-cli/cli.js dist/quiet.js example/", + "start": "rollup -c config/rollup.config.dev.js -w", + "test": "jest" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jitsi/quiet-js.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/jitsi/quiet-js/issues" + }, + "homepage": "https://github.com/jitsi/quiet-js#readme", + "devDependencies": { + "cpy-cli": "^2.0.0", + "path-exists-cli": "^1.0.0", + "rollup": "^1.6.0", + "rollup-plugin-legacy": "^1.0.0", + "rollup-plugin-livereload": "^1.0.0", + "rollup-plugin-babel-minify": "^8.0.0", + "rollup-plugin-serve": "^1.0.1", + "rollup-plugin-string": "^3.0.0" + } +} diff --git a/quiet-emscripten.js b/quiet-emscripten.js deleted file mode 100644 index 4d4b330..0000000 --- a/quiet-emscripten.js +++ /dev/null @@ -1,20 +0,0 @@ -var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){assert(args.length==sig.length-1);if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].apply(null,args)}else{assert(sig.length==1);assert("dynCall_"+sig in Module,"bad function pointer type - no table for sig '"+sig+"'");return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i0),size)|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){return func}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.");chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;Module.printErr("still waiting on run dependencies:")}Module.printErr("dependency: "+dep)}if(shown){Module.printErr("(end of list)")}}),1e4)}}else{Module.printErr("warning: run dependency added without ID")}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{Module.printErr("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+47072;__ATINIT__.push();memoryInitializer="quiet-emscripten.js.mem";var tempDoublePtr=STATICTOP;STATICTOP+=16;assert(tempDoublePtr%8==0);Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}Module["_roundf"]=_roundf;Module["_memset"]=_memset;function _pthread_mutex_lock(){}function _pthread_cond_signal(){}function _abort(){Module["abort"]()}function _pthread_cond_destroy(){}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}function _pthread_mutex_init(){}function ___lock(){}function ___unlock(){}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var _llvm_fabs_f64=Math_abs;function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);Runtime.stackRestore(ret)}var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _llvm_ctpop_i32(x){var ret=0;while(x){if(x&1)ret++;x>>>=1}return ret}var _llvm_pow_f32=Math_pow;var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;else Module.printErr("failed to set errno from JS");return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)this.stack=demangleAll(this.stack)};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _pthread_cond_timedwait(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;Module["_memmove"]=_memmove;function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_bitshift64Lshr"]=_bitshift64Lshr;function _sched_yield(){return 0}function _pthread_cond_init(){}function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}Module["_i64Add"]=_i64Add;function _pthread_mutex_unlock(){}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module["_bitshift64Shl"]=_bitshift64Shl;function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(Runtime.stackSave());return self.LLVM_SAVEDSTACKS.length-1}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_mutex_destroy(){}function _pthread_cond_wait(){return 0}var _llvm_fabs_f32=Math_abs;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE>2]|0)){g[a>>2]=0.0;g[a+4>>2]=0.0;return}h=b+136|0;switch(c[h>>2]|0){case 0:{f=b+120|0;e=c[f>>2]|0;i=e+1|0;c[f>>2]=i;b=c[b+64>>2]|0;d=c[b+(e<<3)>>2]|0;e=c[b+(e<<3)+4>>2]|0;if((i|0)==64){c[f>>2]=0;c[h>>2]=1}c[a>>2]=d;c[a+4>>2]=e;return}case 1:{d=b+120|0;f=c[d>>2]|0;i=f+1|0;c[d>>2]=i;j=c[b+100>>2]|0;e=c[j+(f<<3)>>2]|0;f=c[j+(f<<3)+4>>2]|0;if((i|0)==(c[b+96>>2]|0)){c[d>>2]=0;c[h>>2]=2}c[a>>2]=e;c[a+4>>2]=f;return}case 2:{d=b+120|0;f=c[d>>2]|0;j=f+1|0;c[d>>2]=j;i=c[b+116>>2]|0;e=c[i+(f<<3)>>2]|0;f=c[i+(f<<3)+4>>2]|0;if((j|0)==(c[b+112>>2]|0)){c[d>>2]=0;c[h>>2]=3}c[a>>2]=e;c[a+4>>2]=f;return}case 3:{d=b+120|0;j=(c[d>>2]|0)+1|0;c[d>>2]=j;if((j|0)==(c[b+4>>2]<<1|0)){c[d>>2]=0;c[b+132>>2]=1;c[e>>2]=0}c[a>>2]=0;c[a+4>>2]=0;return}default:{Qp(25744,74,1,c[2348]|0)|0;kb(1)}}}function Vf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0.0,k=0,l=0.0;h=Xp(244)|0;c[h>>2]=a;c[h+4>>2]=b;a=h+64|0;c[a>>2]=7;b=h+68|0;g[b>>2]=.30000001192092896;d=h+116|0;c[d>>2]=Xp(512)|0;c[h+120>>2]=Xp(512)|0;e=Qj(7,137,1)|0;f=0;do{k=(Tj(e)|0)!=0;i=c[d>>2]|0;g[i+(f<<3)>>2]=k?.7071067690849304:-.7071067690849304;g[i+(f<<3)+4>>2]=0.0;i=(Tj(e)|0)!=0;l=i?.7071067811865476:-.7071067811865476;i=c[d>>2]|0;k=i+(f<<3)|0;i=i+(f<<3)+4|0;j=l+ +g[i>>2];g[k>>2]=+g[k>>2]+l*0.0;g[i>>2]=j;f=f+1|0}while((f|0)!=64);Sj(e);k=eh(c[d>>2]|0,64,7,2,c[a>>2]|0,+g[b>>2])|0;c[h+72>>2]=k;dh(k,.5);c[h+104>>2]=32;k=h+100|0;c[k>>2]=Me(7,32,2,c[a>>2]|0,+g[b>>2])|0;f=h+92|0;c[f>>2]=zj(0)|0;e=zj(0)|0;i=h+96|0;c[i>>2]=e;Cj(e,9.999999747378752e-05);c[h+128>>2]=0;c[h+140>>2]=0;c[h+160>>2]=0;c[h+136>>2]=0;c[h+148>>2]=0;c[h+152>>2]=14;c[h+124>>2]=0;Wf(h,0)|0;c[h+188>>2]=di(48)|0;e=h+208|0;c[e>>2]=64;b=ph()|0;d=h+200|0;c[d>>2]=b;rh(b,c[e>>2]|0,5,1,7,47)|0;d=sh(c[d>>2]|0)|0;c[h+196>>2]=d;c[h+192>>2]=Xp(d<<3)|0;c[h+204>>2]=Xp(c[e>>2]|0)|0;c[h+184>>2]=0;yl(h+48|0);e=h+228|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;Dj(c[f>>2]|0);Dj(c[i>>2]|0);Ie(c[k>>2]|0);c[h+224>>2]=0;c[h+216>>2]=0;c[h+220>>2]=0;g[h+8>>2]=0.0;return h|0}function Wf(a,b){a=a|0;b=b|0;var d=0;b=(b|0)==0?572:b;if(((c[b>>2]|0)+-1|0)>>>0>5){Qp(25819,72,1,c[2348]|0)|0;kb(1)}if(!(c[b+4>>2]|0)){d=c[2348]|0;Qp(25892,72,1,d)|0;kb(1)}if(!(c[b+8>>2]|0)){d=c[2348]|0;Qp(25892,72,1,d)|0;kb(1)}if(!(c[b+12>>2]|0)){Qp(25965,79,1,c[2348]|0)|0;kb(1)}else{gq(a+168|0,b|0,16)|0;Xf(a,c[a+152>>2]|0);return 0}return 0}function Xf(a,b){a=a|0;b=b|0;var d=0,e=0;c[a+152>>2]=b;e=b+6|0;b=a+156|0;c[b>>2]=e;d=a+160|0;c[d>>2]=_p(c[d>>2]|0,e)|0;d=a+148|0;e=c[d>>2]|0;if(e|0)qh(e);e=ph()|0;c[d>>2]=e;rh(e,c[b>>2]|0,c[a+168>>2]|0,c[a+172>>2]|0,c[a+176>>2]|0,c[a+180>>2]|0)|0;e=sh(c[d>>2]|0)|0;b=a+144|0;c[b>>2]=e;d=a+140|0;c[d>>2]=_p(c[d>>2]|0,e<<3)|0;d=a+136|0;e=c[d>>2]|0;if(e|0)Fh(e);e=Eh(c[b>>2]|0,16)|0;c[d>>2]=e;e=Gh(e)|0;c[a+132>>2]=e;a=a+128|0;c[a>>2]=_p(c[a>>2]|0,e<<3)|0;return}function Yf(a){a=a|0;if(c[a+232>>2]|0)uk(c[a+240>>2]|0);Yp(c[a+116>>2]|0);Yp(c[a+120>>2]|0);Yp(c[a+128>>2]|0);Yp(c[a+140>>2]|0);Yp(c[a+160>>2]|0);Yp(c[a+192>>2]|0);Yp(c[a+204>>2]|0);Fh(c[a+136>>2]|0);qh(c[a+148>>2]|0);Hi(c[a+188>>2]|0);qh(c[a+200>>2]|0);fh(c[a+72>>2]|0);Ge(c[a+100>>2]|0);Ej(c[a+92>>2]|0);Ej(c[a+96>>2]|0);Yp(a);return}function Zf(a,b){a=a|0;b=b|0;c[a+124>>2]=b;return}function _f(a,b){a=a|0;b=b|0;c[a+184>>2]=b;return}function $f(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=i;i=i+48|0;if((i|0)>=(j|0))ba();e=w+40|0;f=w+32|0;g=w+24|0;o=w+16|0;p=w+8|0;q=w;if(!d){i=w;return}r=a+228|0;s=a+224|0;t=g+4|0;u=o+4|0;h=p+4|0;k=q+4|0;l=a+236|0;m=a+240|0;n=f+4|0;v=0;a:while(1){if(c[r>>2]|0?(c[l>>2]|0)==0:0){x=c[m>>2]|0;y=c[b+(v<<3)+4>>2]|0;c[f>>2]=c[b+(v<<3)>>2];c[n>>2]=y;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];tk(x,e)}switch(c[s>>2]|0){case 0:{y=c[b+(v<<3)+4>>2]|0;c[g>>2]=c[b+(v<<3)>>2];c[t>>2]=y;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];ag(a,e);break}case 1:{y=c[b+(v<<3)+4>>2]|0;c[o>>2]=c[b+(v<<3)>>2];c[u>>2]=y;c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];bg(a,e);break}case 2:{y=c[b+(v<<3)+4>>2]|0;c[p>>2]=c[b+(v<<3)>>2];c[h>>2]=y;c[e>>2]=c[p>>2];c[e+4>>2]=c[p+4>>2];cg(a,e);break}case 3:{y=c[b+(v<<3)+4>>2]|0;c[q>>2]=c[b+(v<<3)>>2];c[k>>2]=y;c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];eg(a,e);break}default:{e=11;break a}}v=v+1|0;if(v>>>0>=d>>>0){e=13;break}}if((e|0)==11){Qp(26500,58,1,c[2348]|0)|0;kb(1)}else if((e|0)==13){i=w;return}}function ag(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n+8|0;h=n;m=a+72|0;k=c[m>>2]|0;f=c[b+4>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=f;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];l=hh(k,l)|0;if(!l){i=n;return}k=a+76|0;g[k>>2]=+lh(c[m>>2]|0);e=a+88|0;g[e>>2]=+mh(c[m>>2]|0);f=a+80|0;g[f>>2]=+nh(c[m>>2]|0);h=a+84|0;g[h>>2]=+oh(c[m>>2]|0);d=+g[k>>2];k=c[a+104>>2]|0;if(d>0.0){d=d*+(k>>>0);b=0}else{d=(d+1.0)*+(k>>>0);b=1}c[a+112>>2]=(~~d>>>0>>>0)%(k>>>0)|0;c[a+108>>2]=b;Ne(c[a+100>>2]|0,.5/+g[e>>2]);k=a+92|0;Fj(c[k>>2]|0,+g[f>>2]);Hj(c[k>>2]|0,+g[h>>2]);c[a+224>>2]=1;k=a+236|0;c[k>>2]=1;$f(a,l,kh(c[m>>2]|0)|0);c[k>>2]=0;i=n;return}function bg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;k=i;i=i+32|0;if((i|0)>=(j|0))ba();f=k+24|0;e=k+16|0;l=k+8|0;g=k;m=c[b+4>>2]|0;d=a+92|0;h=c[d>>2]|0;c[l>>2]=c[b>>2];c[l+4>>2]=m;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];Mj(h,f,e);Ij(c[d>>2]|0);d=a+100|0;h=c[d>>2]|0;b=e+4|0;l=c[b>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=l;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Ke(h,f);Le(c[d>>2]|0,c[a+112>>2]|0,e);d=a+108|0;f=c[d>>2]|0;c[d>>2]=f+1;if((f|0)>-1){g=c[e>>2]|0;h=c[b>>2]|0;c[d>>2]=f+-1}else{g=0;h=0}if((f|0)<0){i=k;return}d=c[a+64>>2]<<1;e=a+216|0;b=c[e>>2]|0;if(b>>>0>=d>>>0){b=b-d|0;m=c[a+120>>2]|0;c[m+(b<<3)>>2]=g;c[m+(b<<3)+4>>2]=h;b=c[e>>2]|0}c[e>>2]=b+1;if((b|0)!=(d+63|0)){i=k;return}c[a+224>>2]=2;i=k;return}function cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+64|0;if((i|0)>=(j|0))ba();o=q+24|0;e=q+16|0;d=q+8|0;f=q;m=c[b+4>>2]|0;p=a+92|0;n=c[p>>2]|0;c[d>>2]=c[b>>2];c[d+4>>2]=m;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];Mj(n,o,e);Ij(c[p>>2]|0);n=a+100|0;d=c[n>>2]|0;b=e+4|0;m=c[b>>2]|0;c[f>>2]=c[e>>2];c[f+4>>2]=m;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];Ke(d,o);Le(c[n>>2]|0,c[a+112>>2]|0,e);d=a+108|0;f=c[d>>2]|0;c[d>>2]=f+1;if((f|0)>-1){l=c[e>>2]|0;m=c[b>>2]|0;c[d>>2]=f+-1;b=l;d=m}else{b=0;d=0}if((f|0)<0){i=q;return}m=a+220|0;l=c[m>>2]|0;k=c[a+128>>2]|0;c[k+(l<<3)>>2]=b;c[k+(l<<3)+4>>2]=d;l=(c[m>>2]|0)+1|0;c[m>>2]=l;if((l|0)!=(c[a+132>>2]|0)){i=q;return}dg(a);b=a+164|0;if(c[b>>2]|0){c[m>>2]=0;c[a+224>>2]=3;i=q;return}l=a+48|0;c[l>>2]=(c[l>>2]|0)+1;if(c[a>>2]|0){f=a+8|0;g[f>>2]=0.0;g[a+12>>2]=+yp(+g[a+88>>2])*20.0;g[a+16>>2]=+Jj(c[p>>2]|0);k=a+20|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;k=c[a>>2]|0;l=c[a+160>>2]|0;b=c[b>>2]|0;d=c[a+4>>2]|0;e=o;h=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(h|0));ob[k&1](l,b,0,0,0,o,d)|0}Dj(c[p>>2]|0);Dj(c[a+96>>2]|0);Ie(c[n>>2]|0);c[a+224>>2]=0;c[a+216>>2]=0;c[m>>2]=0;g[a+8>>2]=0.0;i=q;return}function dg(b){b=b|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();l=p;h=b+136|0;f=b+140|0;Hh(c[h>>2]|0,c[b+128>>2]|0,c[f>>2]|0);e=c[b+148>>2]|0;f=c[f>>2]|0;k=b+160|0;g=c[k>>2]|0;if(!(c[b+124>>2]|0))e=yh(e,f,g)|0;else e=zh(e,f,g)|0;o=b+164|0;c[o>>2]=e;if(!e){i=p;return}q=+Ih(c[h>>2]|0);r=+Jh(c[h>>2]|0);n=b+96|0;Fj(c[n>>2]|0,q);Hj(c[n>>2]|0,r+q*+((c[b+132>>2]|0)>>>0));n=c[b+152>>2]|0;m=c[k>>2]|0;e=a[m+n>>0]|0;if(e<<24>>24!=102){b=c[2348]|0;c[l>>2]=e&255;c[l+4>>2]=102;Kp(b,26045,l)|0;c[o>>2]=0;i=p;return}f=(d[m+(n+1)>>0]|0)<<8|(d[m+(n+2)>>0]|0);g=b+208|0;c[g>>2]=f;s=a[m+(n+3)>>0]|0;h=s&255;l=d[m+(n+4)>>0]|0;k=l>>>5;l=l&31;e=(d[m+(n+5)>>0]|0)&31;if((s+-1&255)>59){Qp(26128,66,1,c[2348]|0)|0;c[o>>2]=0;i=p;return}switch(k|0){case 0:case 7:{Qp(26195,70,1,c[2348]|0)|0;c[o>>2]=0;i=p;return}default:{}}if((l+-1|0)>>>0>26){Qp(26266,78,1,c[2348]|0)|0;c[o>>2]=0;i=p;return}if((e+-1|0)>>>0>26){Qp(26345,78,1,c[2348]|0)|0;c[o>>2]=0;i=p;return}n=b+188|0;c[n>>2]=Gi(c[n>>2]|0,h)|0;n=b+200|0;rh(c[n>>2]|0,f,k,l,e,h)|0;n=sh(c[n>>2]|0)|0;c[b+196>>2]=n;s=b+192|0;c[s>>2]=_p(c[s>>2]|0,n<<3)|0;n=b+204|0;b=_p(c[n>>2]|0,c[g>>2]|0)|0;c[n>>2]=b;if(!((b|0)==0|(c[s>>2]|0)==0)){i=p;return}Qp(26424,75,1,c[2348]|0)|0;c[o>>2]=0;i=p;return}function eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;v=i;i=i+96|0;if((i|0)>=(j|0))ba();t=v+48|0;k=v+32|0;d=v+16|0;e=v+8|0;m=v;f=v+40|0;h=v+24|0;l=m+4|0;g[m>>2]=0.0;g[l>>2]=0.0;r=c[b+4>>2]|0;u=a+92|0;s=c[u>>2]|0;c[d>>2]=c[b>>2];c[d+4>>2]=r;c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];Mj(s,t,k);Ij(c[u>>2]|0);s=a+100|0;d=c[s>>2]|0;b=k+4|0;r=c[b>>2]|0;c[e>>2]=c[k>>2];c[e+4>>2]=r;c[t>>2]=c[e>>2];c[t+4>>2]=c[e+4>>2];Ke(d,t);Le(c[s>>2]|0,c[a+112>>2]|0,k);d=a+108|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>-1){q=c[k>>2]|0;r=c[b>>2]|0;c[m>>2]=q;c[l>>2]=r;c[d>>2]=e+-1;b=q;d=r}else{b=0;d=0}if((e|0)<0){i=v;return}r=a+96|0;p=c[r>>2]|0;c[f>>2]=b;c[f+4>>2]=d;c[t>>2]=c[f>>2];c[t+4>>2]=c[f+4>>2];Mj(p,t,m);p=a+188|0;n=c[p>>2]|0;q=c[l>>2]|0;c[h>>2]=c[m>>2];c[h+4>>2]=q;c[t>>2]=c[h>>2];c[t+4>>2]=c[h+4>>2];Mi(n,t,k);x=+Qi(c[p>>2]|0);w=+Ri(c[p>>2]|0);Kj(c[r>>2]|0,x);Ij(c[r>>2]|0);p=a+8|0;g[p>>2]=w*w+ +g[p>>2];n=c[l>>2]|0;q=a+220|0;o=c[q>>2]|0;k=a+192|0;f=c[k>>2]|0;c[f+(o<<3)>>2]=c[m>>2];c[f+(o<<3)+4>>2]=n;o=(c[q>>2]|0)+1|0;c[q>>2]=o;f=a+196|0;if((o|0)!=(c[f>>2]|0)){i=v;return}h=a+200|0;b=c[h>>2]|0;d=c[k>>2]|0;l=a+204|0;e=c[l>>2]|0;if(!(c[a+184>>2]|0))b=yh(b,d,e)|0;else b=zh(b,d,e)|0;d=a+212|0;c[d>>2]=b;o=a+48|0;c[o>>2]=(c[o>>2]|0)+1;o=a+52|0;c[o>>2]=(c[o>>2]|0)+1;o=a+56|0;c[o>>2]=(c[o>>2]|0)+b;b=a+208|0;o=a+60|0;c[o>>2]=(c[o>>2]|0)+(c[b>>2]|0);if(c[a>>2]|0){m=wh(c[h>>2]|0)|0;g[p>>2]=+yp(+g[p>>2]/+((c[f>>2]|0)>>>0))*10.0;g[a+12>>2]=+yp(+g[a+88>>2])*20.0;g[a+16>>2]=+Jj(c[u>>2]|0);c[a+20>>2]=c[k>>2];c[a+24>>2]=c[f>>2];c[a+28>>2]=m;c[a+32>>2]=c[636+(m<<4)+12>>2];c[a+36>>2]=th(c[h>>2]|0)|0;c[a+40>>2]=uh(c[h>>2]|0)|0;c[a+44>>2]=vh(c[h>>2]|0)|0;m=c[a>>2]|0;n=c[a+160>>2]|0;o=c[a+164>>2]|0;l=c[l>>2]|0;k=c[b>>2]|0;e=c[d>>2]|0;f=c[a+4>>2]|0;h=t;b=p;d=h+40|0;do{c[h>>2]=c[b>>2];h=h+4|0;b=b+4|0}while((h|0)<(d|0));ob[m&1](n,o,l,k,e,t,f)|0}Dj(c[u>>2]|0);Dj(c[r>>2]|0);Ie(c[s>>2]|0);c[a+224>>2]=0;c[a+216>>2]=0;c[q>>2]=0;g[a+8>>2]=0.0;i=v;return}function fg(a){a=a|0;var b=0;b=a+232|0;if(c[b>>2]|0)return;c[a+240>>2]=qk(2e3)|0;c[a+228>>2]=1;c[b>>2]=1;return}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=i;i=i+256|0;if((i|0)>=(j|0))ba();w=x+248|0;v=x+224|0;s=x+200|0;r=x+192|0;q=x+168|0;p=x+144|0;o=x+136|0;n=x+112|0;m=x+88|0;l=x+64|0;k=x+40|0;f=x+16|0;e=x+8|0;d=x;u=x+252|0;if(!(c[a+232>>2]|0)){Qp(26559,90,1,c[2348]|0)|0;i=x;return}t=Ep(b,37318)|0;c[d>>2]=b;Kp(t,28173,d)|0;Qp(37886,2,1,t)|0;Qp(37457,11,1,t)|0;Qp(28200,12,1,t)|0;c[e>>2]=2e3;Kp(t,37469,e)|0;Qp(26650,54,1,t)|0;Qp(37695,16,1,t)|0;sk(c[a+240>>2]|0,u);d=0;do{e=c[u>>2]|0;z=+g[e+(d<<3)>>2];y=+g[e+(d<<3)+4>>2];d=d+1|0;c[f>>2]=d;h[f+8>>3]=z;h[f+16>>3]=y;Kp(t,37712,f)|0}while((d|0)!=2e3);Qp(37886,2,1,t)|0;Qp(26705,18,1,t)|0;Qp(28283,48,1,t)|0;Qp(39490,9,1,t)|0;Qp(37790,24,1,t)|0;Qp(37815,30,1,t)|0;Qp(26724,27,1,t)|0;d=c[a+116>>2]|0;c[u>>2]=d;y=+g[d>>2];z=+g[d+4>>2];c[k>>2]=1;h[k+8>>3]=y;h[k+16>>3]=z;Kp(t,26752,k)|0;d=1;do{k=c[u>>2]|0;y=+g[k+(d<<3)>>2];z=+g[k+(d<<3)+4>>2];d=d+1|0;c[l>>2]=d;h[l+8>>3]=y;h[l+16>>3]=z;Kp(t,26752,l)|0}while((d|0)!=64);Qp(26792,27,1,t)|0;d=c[a+120>>2]|0;c[u>>2]=d;y=+g[d>>2];z=+g[d+4>>2];c[m>>2]=1;h[m+8>>3]=y;h[m+16>>3]=z;Kp(t,26820,m)|0;d=1;do{m=c[u>>2]|0;y=+g[m+(d<<3)>>2];z=+g[m+(d<<3)+4>>2];d=d+1|0;c[n>>2]=d;h[n+8>>3]=y;h[n+16>>3]=z;Kp(t,26820,n)|0}while((d|0)!=64);e=a+144|0;c[o>>2]=c[e>>2];Kp(t,26860,o)|0;d=c[a+140>>2]|0;c[u>>2]=d;if(c[e>>2]|0?(o=d,y=+g[o>>2],z=+g[o+4>>2],c[p>>2]=1,h[p+8>>3]=y,h[p+16>>3]=z,Kp(t,26887,p)|0,(c[e>>2]|0)>>>0>1):0){d=1;do{p=c[u>>2]|0;y=+g[p+(d<<3)>>2];z=+g[p+(d<<3)+4>>2];d=d+1|0;c[q>>2]=d;h[q+8>>3]=y;h[q+16>>3]=z;Kp(t,26887,q)|0}while(d>>>0<(c[e>>2]|0)>>>0)}e=a+196|0;c[r>>2]=c[e>>2];Kp(t,26925,r)|0;d=c[a+192>>2]|0;c[u>>2]=d;if(c[e>>2]|0?(r=d,y=+g[r>>2],z=+g[r+4>>2],c[s>>2]=1,h[s+8>>3]=y,h[s+16>>3]=z,Kp(t,26953,s)|0,(c[e>>2]|0)>>>0>1):0){d=1;do{s=c[u>>2]|0;y=+g[s+(d<<3)>>2];z=+g[s+(d<<3)+4>>2];d=d+1|0;c[v>>2]=d;h[v+8>>3]=y;h[v+16>>3]=z;Kp(t,26953,v)|0}while(d>>>0<(c[e>>2]|0)>>>0)}Qp(26992,20,1,t)|0;Qp(27013,45,1,t)|0;Qp(27059,20,1,t)|0;Qp(27080,28,1,t)|0;Qp(39490,9,1,t)|0;Qp(27109,23,1,t)|0;Qp(39476,13,1,t)|0;Qp(27133,34,1,t)|0;Qp(27168,20,1,t)|0;Qp(27189,47,1,t)|0;Qp(27059,20,1,t)|0;Qp(27080,28,1,t)|0;Qp(39490,9,1,t)|0;Qp(27109,23,1,t)|0;Qp(39476,13,1,t)|0;Qp(27237,35,1,t)|0;Qp(37886,2,1,t)|0;Hp(t)|0;c[w>>2]=b;Rp(27273,w)|0;i=x;return}function hg(){var a=0,b=0,d=0,e=0;a=Xp(100)|0;c[a+4>>2]=2;c[a+8>>2]=3;g[a+12>>2]=.5;c[a+16>>2]=63;d=a+24|0;c[d>>2]=0;c[a+28>>2]=6;e=$h(2,3,.5)|0;c[a>>2]=e;b=a+32|0;c[b>>2]=Qj(6,109,1)|0;ai(e);c[a+84>>2]=0;Vj(c[b>>2]|0);c[a+88>>2]=0;c[a+92>>2]=0;c[a+96>>2]=0;c[a+44>>2]=0;c[a+48>>2]=0;c[a+52>>2]=0;ig(a,8);c[a+72>>2]=0;c[a+60>>2]=6;c[a+64>>2]=1;c[a+68>>2]=1;b=Ck(0,6,1,1)|0;c[a+56>>2]=b;b=Fk(b)|0;c[a+76>>2]=b;c[d>>2]=b<<3;c[a+80>>2]=Xp(b)|0;return a|0}function ig(a,b){a=a|0;b=b|0;var d=0,e=0;if(c[a+88>>2]|0){Qp(27317,87,1,c[2348]|0)|0;return}c[a+36>>2]=b;d=b+5|0;e=a+44|0;c[e>>2]=_p(c[e>>2]|0,d)|0;e=a+52|0;b=c[e>>2]|0;if(b|0)Ek(b);b=Ck(d,6,6,1)|0;c[e>>2]=b;b=Fk(b)|0;e=a+40|0;c[e>>2]=b;d=a+48|0;c[d>>2]=_p(c[d>>2]|0,b)|0;c[a+20>>2]=c[e>>2]<<3;return}function jg(a){a=a|0;ai(c[a>>2]|0);c[a+84>>2]=0;Vj(c[a+32>>2]|0);c[a+88>>2]=0;c[a+92>>2]=0;c[a+96>>2]=0;return}function kg(a){a=a|0;bi(c[a>>2]|0);Sj(c[a+32>>2]|0);Yp(c[a+44>>2]|0);Yp(c[a+48>>2]|0);Ek(c[a+52>>2]|0);Yp(c[a+80>>2]|0);Ek(c[a+56>>2]|0);Yp(a);return}function lg(a){a=a|0;return c[a+88>>2]|0}function mg(a){a=a|0;if(!(c[a+88>>2]|0)){Qp(27405,58,1,c[2348]|0)|0;a=0;return a|0}else{a=_((c[a+20>>2]|0)+(c[a+16>>2]|0)+(c[a+24>>2]|0)+(c[a+8>>2]<<1)|0,c[a+4>>2]|0)|0;return a|0}return 0}function ng(b,e,f,g,h,i,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;m=b+72|0;n=b+60|0;if((((c[m>>2]|0)==(g|0)?(c[n>>2]|0)==(h|0):0)?(l=b+64|0,(c[l>>2]|0)==(i|0)):0)?(k=b+68|0,(c[k>>2]|0)==(j|0)):0){h=b+56|0;i=b+80|0}else{c[m>>2]=g;c[n>>2]=h;l=b+64|0;c[l>>2]=i;k=b+68|0;c[k>>2]=j;o=b+56|0;h=Dk(c[o>>2]|0,g,h,i,j)|0;c[o>>2]=h;h=Fk(h)|0;c[b+76>>2]=h;c[b+24>>2]=h<<3;i=b+80|0;c[i>>2]=_p(c[i>>2]|0,h)|0;h=o}c[b+88>>2]=1;g=b+44|0;o=b+36|0;gq(c[g>>2]|0,e|0,c[o>>2]|0)|0;o=c[o>>2]|0;a[(c[g>>2]|0)+o>>0]=4;a[(c[g>>2]|0)+(o+1)>>0]=(c[m>>2]|0)>>>8;a[(c[g>>2]|0)+(o+2)>>0]=c[m>>2];e=o+3|0;a[(c[g>>2]|0)+e>>0]=c[n>>2]<<5;e=(c[g>>2]|0)+e|0;a[e>>0]=d[e>>0]|0|c[l>>2]&31;a[(c[g>>2]|0)+(o+4)>>0]=c[k>>2]&31;o=b+48|0;Jk(c[b+52>>2]|0,c[g>>2]|0,c[o>>2]|0);Nj(c[o>>2]|0,c[b+40>>2]|0);Jk(c[h>>2]|0,f,c[i>>2]|0);return}function og(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;g=a+84|0;switch(c[g>>2]|0){case 0:{pg(a,b);break}case 1:{e=a+96|0;Vp(f,c[e>>2]|0,8);ci(c[a>>2]|0,(d[(c[a+48>>2]|0)+(c[f>>2]|0)>>0]|0)>>>(7-(c[f+4>>2]|0)|0)&1,b);f=(c[e>>2]|0)+1|0;c[e>>2]=f;if((f|0)==(c[a+20>>2]|0)){c[e>>2]=0;c[g>>2]=2}break}case 2:{e=a+96|0;Vp(f,c[e>>2]|0,8);ci(c[a>>2]|0,(d[(c[a+80>>2]|0)+(c[f>>2]|0)>>0]|0)>>>(7-(c[f+4>>2]|0)|0)&1,b);f=(c[e>>2]|0)+1|0;c[e>>2]=f;if((f|0)==(c[a+24>>2]|0)){c[e>>2]=0;c[g>>2]=3}break}case 3:{qg(a,b);break}default:{Qp(27464,70,1,c[2348]|0)|0;kb(1)}}e=a+92|0;if(!(c[e>>2]|0)){a=0;i=h;return a|0}ai(c[a>>2]|0);c[g>>2]=0;Vj(c[a+32>>2]|0);c[a+88>>2]=0;c[e>>2]=0;c[a+96>>2]=0;a=1;i=h;return a|0}function pg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0;k=a+32|0;l=Tj(c[k>>2]|0)|0;ci(c[a>>2]|0,l&255,b);l=a+96|0;d=c[l>>2]|0;j=a+8|0;h=c[j>>2]|0;a:do if(d>>>0>>0?(i=a+4|0,e=c[i>>2]|0,(e|0)!=0):0){f=0;while(1){n=+Vh((_(d,e)|0)+f|0,_(e<<1,h)|0);d=b+(f<<3)|0;e=b+(f<<3)+4|0;m=n*+g[e>>2];g[d>>2]=n*+g[d>>2];g[e>>2]=m;f=f+1|0;e=c[i>>2]|0;d=c[l>>2]|0;if(f>>>0>=e>>>0)break a;h=c[j>>2]|0}}while(0);b=d+1|0;c[l>>2]=b;if((b|0)!=(c[a+16>>2]|0))return;Vj(c[k>>2]|0);c[l>>2]=0;c[a+84>>2]=1;return}function qg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0.0;k=(Np()|0)%2|0;ci(c[a>>2]|0,k&255,b);k=a+96|0;d=c[k>>2]|0;i=a+8|0;h=c[i>>2]|0;if(d>>>0>=h>>>0?(j=a+4|0,e=c[j>>2]|0,(e|0)!=0):0){f=0;while(1){m=+Vh((_(d,e)|0)+f|0,_(e<<1,h)|0);h=b+(f<<3)|0;e=b+(f<<3)+4|0;l=m*+g[e>>2];g[h>>2]=m*+g[h>>2];g[e>>2]=l;f=f+1|0;e=c[j>>2]|0;if(f>>>0>=e>>>0)break;d=c[k>>2]|0;h=c[i>>2]|0}d=c[k>>2]|0}b=d+1|0;c[k>>2]=b;if((b|0)!=(c[a+28>>2]|0))return;c[k>>2]=0;c[a+92>>2]=1;return}function rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;q=Xp(256)|0;c[q+16>>2]=a;c[q+20>>2]=b;n=q+4|0;c[n>>2]=2;o=q+8|0;c[o>>2]=3;p=q+12|0;g[p>>2]=.5;c[q>>2]=Ue(3,.375)|0;m=q+132|0;c[m>>2]=63;f=q+136|0;c[f>>2]=Xp(252)|0;c[q+140>>2]=Xp(252)|0;k=i;i=i+((1*((c[n>>2]|0)*63<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();a=Qj(6,109,1)|0;b=$h(c[n>>2]|0,c[o>>2]|0,+g[p>>2])|0;if((c[o>>2]|0)!=(0-(c[m>>2]|0)|0)){h=0;do{d=Tj(a)|0;d=d&255;if(h>>>0<(c[m>>2]|0)>>>0)g[(c[f>>2]|0)+(h<<2)>>2]=d|0?1.0:-1.0;e=c[o>>2]|0;if(h>>>0>>0)ci(b,d,k);else ci(b,d,k+((_(c[n>>2]|0,h-e|0)|0)<<3)|0);h=h+1|0}while(h>>>0<((c[o>>2]|0)+(c[m>>2]|0)|0)>>>0)}bi(b);Sj(a);l=q+108|0;c[l>>2]=tl(k,_(c[n>>2]|0,c[m>>2]|0)|0,.5,.05000000074505806)|0;h=q+124|0;c[h>>2]=qk(_((c[o>>2]|0)+(c[m>>2]|0)|0,c[n>>2]|0)|0)|0;a=q+84|0;c[a>>2]=32;e=q+76|0;c[e>>2]=te(12,32,c[n>>2]|0,c[o>>2]|0,+g[p>>2])|0;f=q+80|0;c[f>>2]=ue(12,c[a>>2]|0,c[n>>2]|0,c[o>>2]|0,+g[p>>2])|0;a=q+128|0;c[a>>2]=zj(0)|0;d=q+156|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;sg(q,8);d=q+196|0;c[d>>2]=1;c[q+180>>2]=6;c[q+184>>2]=1;c[q+188>>2]=1;b=Ck(1,6,1,1)|0;c[q+208>>2]=b;b=Fk(b)|0;c[q+192>>2]=b;c[q+204>>2]=Xp(c[d>>2]|0)|0;c[q+200>>2]=Xp(b)|0;b=q+216|0;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));rk(c[h>>2]|0);ul(c[l>>2]|0);Dj(c[a>>2]|0);g[q+64>>2]=0.0;g[q+68>>2]=0.0;g[q+72>>2]=0.0;pe(c[e>>2]|0);pe(c[f>>2]|0);g[q+88>>2]=0.0;i=r;return q|0}function sg(a,b){a=a|0;b=b|0;var d=0,e=0;c[a+144>>2]=b;b=b+5|0;d=a+164|0;c[d>>2]=_p(c[d>>2]|0,b)|0;d=a+168|0;e=c[d>>2]|0;if(e|0)Ek(e);b=Ck(b,6,6,1)|0;c[d>>2]=b;b=Fk(b)|0;e=a+148|0;c[e>>2]=b;d=a+160|0;c[d>>2]=_p(c[d>>2]|0,b)|0;e=c[e>>2]<<3;c[a+152>>2]=e;a=a+156|0;c[a>>2]=_p(c[a>>2]|0,e)|0;return}function tg(a){a=a|0;if(c[a+236>>2]|0){uk(c[a+240>>2]|0);pk(c[a+244>>2]|0);pk(c[a+248>>2]|0);pk(c[a+252>>2]|0)}Re(c[a>>2]|0);ne(c[a+76>>2]|0);ne(c[a+80>>2]|0);Ej(c[a+128>>2]|0);vl(c[a+108>>2]|0);uk(c[a+124>>2]|0);Yp(c[a+136>>2]|0);Yp(c[a+140>>2]|0);Ek(c[a+168>>2]|0);Yp(c[a+156>>2]|0);Yp(c[a+160>>2]|0);Yp(c[a+164>>2]|0);Ek(c[a+208>>2]|0);Yp(c[a+200>>2]|0);Yp(c[a+204>>2]|0);Yp(a);return}function ug(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;G=i;i=i+80|0;if((i|0)>=(j|0))ba();e=G+64|0;f=G+24|0;g=G+8|0;F=G;t=G+56|0;y=G+48|0;z=G+40|0;A=G+32|0;B=G+16|0;if(!d){i=G;return}C=t+4|0;D=a+232|0;h=a+216|0;k=F+4|0;l=a+124|0;m=f+4|0;n=a+108|0;o=a+112|0;p=a+116|0;q=a+120|0;r=g+4|0;s=z+4|0;u=A+4|0;v=B+4|0;w=a+240|0;x=y+4|0;E=0;do{H=c[a>>2]|0;I=c[b+(E<<3)+4>>2]|0;c[t>>2]=c[b+(E<<3)>>2];c[C>>2]=I;c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];Te(H,e,F);if(c[D>>2]|0){I=c[w>>2]|0;H=c[k>>2]|0;c[y>>2]=c[F>>2];c[x>>2]=H;c[e>>2]=c[y>>2];c[e+4>>2]=c[y+4>>2];tk(I,e)}switch(c[h>>2]|0){case 0:{J=c[F>>2]|0;H=c[k>>2]|0;I=c[l>>2]|0;c[f>>2]=J;c[m>>2]=H;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];tk(I,e);I=c[n>>2]|0;c[g>>2]=J;c[r>>2]=H;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];if(wl(I,e,o,p,q)|0)vg(a);break}case 1:{J=c[k>>2]|0;c[z>>2]=c[F>>2];c[s>>2]=J;c[e>>2]=c[z>>2];c[e+4>>2]=c[z+4>>2];wg(a,e);break}case 2:{J=c[k>>2]|0;c[A>>2]=c[F>>2];c[u>>2]=J;c[e>>2]=c[A>>2];c[e+4>>2]=c[A+4>>2];yg(a,e);break}case 3:{J=c[k>>2]|0;c[B>>2]=c[F>>2];c[v>>2]=J;c[e>>2]=c[B>>2];c[e+4>>2]=c[B+4>>2];Ag(a,e);break}default:{}}E=E+1|0}while((E|0)!=(d|0));i=G;return}function vg(a){a=a|0;var b=0.0,d=0,e=0,f=0,h=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;L=i;i=i+80|0;if((i|0)>=(j|0))ba();z=L+64|0;A=L+56|0;B=L+48|0;D=L+40|0;E=L+24|0;J=L+8|0;K=L;F=L+32|0;G=L+16|0;H=a+76|0;pe(c[H>>2]|0);I=a+80|0;pe(c[I>>2]|0);sk(c[a+124>>2]|0,J);b=+g[a+112>>2];if(!(b<.5&b>-.5))Ha(27535,27577,501,27609);C=a+4|0;m=a+8|0;d=_(c[C>>2]<<1,c[m>>2]|0)|0;f=c[a+84>>2]|0;h=+(f>>>0);b=-(b*h);k=a+92|0;g[k>>2]=b;e=~~+dq(+b);l=a+96|0;c[l>>2]=e;d=d+-1|0;if((e|0)<0){do{e=f+e|0;b=h+b;d=d+-1|0}while((e|0)<0);c[l>>2]=e;g[k>>2]=b}c[a+100>>2]=0;y=a+128|0;Fj(c[y>>2]|0,+g[a+116>>2]);e=_((c[m>>2]|0)+(c[a+132>>2]|0)|0,c[C>>2]|0)|0;if(!e){K=a+216|0;c[K>>2]=1;i=L;return}f=F+4|0;k=K+4|0;l=a+64|0;m=a+68|0;p=B+4|0;q=A+4|0;r=D+4|0;s=E+4|0;t=a+72|0;u=G+4|0;x=0;do{if(x>>>0>>0){M=c[y>>2]|0;O=c[J>>2]|0;N=c[O+(x<<3)+4>>2]|0;c[F>>2]=c[O+(x<<3)>>2];c[f>>2]=N;c[z>>2]=c[F>>2];c[z+4>>2]=c[F+4>>2];Mj(M,z,K);Ij(c[y>>2]|0);v=+g[K>>2];w=+g[k>>2];M=c[m>>2]|0;c[B>>2]=c[l>>2];c[p>>2]=M;c[z>>2]=c[B>>2];c[z+4>>2]=c[B+4>>2];Ko(A,z);n=+g[A>>2];o=+g[q>>2];h=v*n-w*o;b=w*n+v*o;if((h!=h|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(D,n,o,v,w);h=+g[D>>2];b=+g[r>>2]}g[E>>2]=h;g[s>>2]=b;c[z>>2]=c[E>>2];c[z+4>>2]=c[E+4>>2];o=+Bo(z);o=o*+((c[C>>2]|0)>>>0);g[t>>2]=o;g[l>>2]=v;g[m>>2]=w;re(c[H>>2]|0,o);re(c[I>>2]|0,+g[t>>2])}else{N=c[J>>2]|0;O=c[N+(x<<3)+4>>2]|0;c[G>>2]=c[N+(x<<3)>>2];c[u>>2]=O;c[z>>2]=c[G>>2];c[z+4>>2]=c[G+4>>2];wg(a,z)}x=x+1|0}while((x|0)!=(e|0));O=a+216|0;c[O>>2]=1;i=L;return}function wg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0.0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;v=i;i=i+64|0;if((i|0)>=(j|0))ba();s=v+48|0;n=v+40|0;l=v+32|0;q=v+24|0;r=v+8|0;f=v;d=v+16|0;t=a+220|0;u=a+132|0;if((c[t>>2]|0)==(c[u>>2]|0)){Qp(27630,64,1,c[2348]|0)|0;i=v;return}w=a+128|0;x=c[w>>2]|0;y=c[b+4>>2]|0;c[d>>2]=c[b>>2];c[d+4>>2]=y;c[s>>2]=c[d>>2];c[s+4>>2]=c[d+4>>2];Mj(x,s,f);Ij(c[w>>2]|0);p=+g[f>>2];o=+g[f+4>>2];b=a+64|0;f=a+68|0;d=c[f>>2]|0;c[l>>2]=c[b>>2];c[l+4>>2]=d;c[s>>2]=c[l>>2];c[s+4>>2]=c[l+4>>2];Ko(n,s);m=+g[n>>2];k=+g[n+4>>2];h=p*m-o*k;e=o*m+p*k;if((h!=h|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(q,m,k,p,o);h=+g[q>>2];e=+g[q+4>>2]}g[r>>2]=h;g[r+4>>2]=e;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];m=+Bo(s);d=a+4|0;m=m*+((c[d>>2]|0)>>>0);g[a+72>>2]=m;g[b>>2]=p;g[f>>2]=o;g[s>>2]=0.0;if(xg(a,m,s)|0?(y=c[t>>2]|0,g[(c[a+140>>2]|0)+(y<<2)>>2]=+g[s>>2]/+((c[d>>2]|0)>>>0),y=y+1|0,c[t>>2]=y,(y|0)==(c[u>>2]|0)):0)c[a+216>>2]=2;i=v;return}function xg(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();f=s+24|0;r=s+20|0;n=s+16|0;h=s+8|0;k=s;l=a+76|0;re(c[l>>2]|0,b);m=a+80|0;re(c[m>>2]|0,b);g[r>>2]=0.0;g[n>>2]=0.0;if(c[a+232>>2]|0){ok(c[a+244>>2]|0,+g[a+72>>2]);se(c[l>>2]|0,c[a+96>>2]|0,r);ok(c[a+248>>2]|0,+g[r>>2])}q=a+100|0;e=c[q>>2]|0;if((e|0)>=1){n=e;p=0;n=n+-1|0;c[q>>2]=n;b=+g[r>>2];r=a+4|0;r=c[r>>2]|0;o=+(r>>>0);o=b/o;g[d>>2]=o;i=s;return p|0}c[q>>2]=2;p=a+96|0;se(c[l>>2]|0,c[p>>2]|0,r);se(c[m>>2]|0,c[p>>2]|0,n);l=a+88|0;b=+g[l>>2]*.9900000095367432;c[k>>2]=c[r>>2];g[k+4>>2]=0.0;c[f>>2]=c[k>>2];c[f+4>>2]=c[k+4>>2];Ko(h,f);b=b+ +g[h>>2]*+g[n>>2]*.05000000074505806;g[l>>2]=b;l=a+92|0;b=+g[l>>2]+b;g[l>>2]=b;f=~~+dq(+b);c[p>>2]=f;k=c[a+84>>2]|0;if((f|0)<0){o=+(k>>>0);e=c[q>>2]|0;do{f=k+f|0;b=o+b;e=e+-1|0}while((f|0)<0);c[p>>2]=f;g[l>>2]=b;c[q>>2]=e}h=k+-1|0;if(f>>>0<=h>>>0){n=c[q>>2]|0;p=1;n=n+-1|0;c[q>>2]=n;b=+g[r>>2];r=a+4|0;r=c[r>>2]|0;o=+(r>>>0);o=b/o;g[d>>2]=o;i=s;return p|0}o=+(k>>>0);e=c[q>>2]|0;do{f=f-k|0;b=b-o;e=e+1|0}while(f>>>0>h>>>0);c[p>>2]=f;g[l>>2]=b;c[q>>2]=e;n=e;p=1;n=n+-1|0;c[q>>2]=n;b=+g[r>>2];r=a+4|0;r=c[r>>2]|0;o=+(r>>>0);o=b/o;g[d>>2]=o;i=s;return p|0}function yg(b,d){b=b|0;d=d|0;var e=0.0,f=0,h=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0;x=i;i=i+96|0;if((i|0)>=(j|0))ba();v=x+48|0;k=x+40|0;r=x+32|0;f=x+16|0;h=x+8|0;u=x;m=x+24|0;w=b+128|0;n=c[w>>2]|0;l=c[d+4>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=l;c[v>>2]=c[m>>2];c[v+4>>2]=c[m+4>>2];Mj(n,v,u);Ij(c[w>>2]|0);s=+g[u>>2];t=+g[u+4>>2];d=b+64|0;u=b+68|0;n=c[u>>2]|0;c[r>>2]=c[d>>2];c[r+4>>2]=n;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];Ko(k,v);p=+g[k>>2];q=+g[k+4>>2];o=s*p-t*q;e=t*p+s*q;if((o!=o|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(f,p,q,s,t);o=+g[f>>2];e=+g[f+4>>2]}g[h>>2]=o;g[h+4>>2]=e;c[v>>2]=c[h>>2];c[v+4>>2]=c[h+4>>2];q=+Bo(v);q=q*+((c[b+4>>2]|0)>>>0);r=b+72|0;g[r>>2]=q;g[d>>2]=s;g[u>>2]=t;g[k>>2]=0.0;if(!(xg(b,q,k)|0)){i=x;return}m=b+224|0;a[(c[b+156>>2]|0)+(c[m>>2]|0)>>0]=+g[k>>2]>0.0&1;n=(c[m>>2]|0)+1|0;c[m>>2]=n;if((n|0)!=(c[b+152>>2]|0)){i=x;return}zg(b);d=b+172|0;do if(!(c[d>>2]|0)){f=c[b+16>>2]|0;if(f|0){m=b+24|0;g[b+28>>2]=+yp(+g[b+120>>2])*20.0;g[m>>2]=0.0;c[b+36>>2]=0;c[b+40>>2]=0;c[b+44>>2]=0;c[b+48>>2]=1;c[b+52>>2]=0;c[b+56>>2]=0;c[b+60>>2]=0;h=c[b+164>>2]|0;k=c[b+20>>2]|0;l=v;n=l+40|0;do{c[l>>2]=c[m>>2];l=l+4|0;m=m+4|0}while((l|0)<(n|0));ob[f&1](h,0,0,0,0,v,k)|0;v=b+216|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;rk(c[b+124>>2]|0);ul(c[b+108>>2]|0);Dj(c[w>>2]|0);g[b+64>>2]=0.0;g[u>>2]=0.0;g[r>>2]=0.0;pe(c[b+76>>2]|0);pe(c[b+80>>2]|0);g[b+88>>2]=0.0;if(c[d>>2]|0)break}v=b+216|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;rk(c[b+124>>2]|0);ul(c[b+108>>2]|0);Dj(c[w>>2]|0);g[b+64>>2]=0.0;g[u>>2]=0.0;g[r>>2]=0.0;pe(c[b+76>>2]|0);pe(c[b+80>>2]|0);g[b+88>>2]=0.0;i=x;return}while(0);c[b+216>>2]=3;i=x;return}function zg(b){b=b|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();e=n;f=b+160|0;m=b+148|0;ck(c[b+156>>2]|0,c[b+152>>2]|0,c[f>>2]|0,c[m>>2]|0,e);e=c[e>>2]|0;if((e|0)!=(c[m>>2]|0))Ha(29224,27577,762,27695);Oj(c[f>>2]|0,e);e=b+164|0;f=Kk(c[b+168>>2]|0,c[f>>2]|0,c[e>>2]|0)|0;m=b+172|0;c[m>>2]=f;if(!f){i=n;return}h=c[b+144>>2]|0;g=c[e>>2]|0;if((a[g+h>>0]|0)!=4){Qp(27723,64,1,c[2348]|0)|0;c[m>>2]=0;i=n;return}l=d[g+(h+1)>>0]<<8|d[g+(h+2)>>0];e=d[g+(h+3)>>0]|0;k=e>>>5;e=e&31;h=d[g+(h+4)>>0]&31;if((k|0)==7){Qp(27788,70,1,c[2348]|0)|0;c[m>>2]=0;f=0;g=0}else g=k;if(e>>>0>27){Qp(27859,78,1,c[2348]|0)|0;c[m>>2]=0;f=0;e=0}if(h>>>0>27){Qp(27938,78,1,c[2348]|0)|0;c[m>>2]=0;i=n;return}if(!f){i=n;return}m=b+196|0;c[m>>2]=l;c[b+180>>2]=g;c[b+184>>2]=e;c[b+188>>2]=h;f=b+208|0;k=Dk(c[f>>2]|0,l,g,e,h)|0;c[f>>2]=k;k=Fk(k)|0;c[b+192>>2]=k;l=b+200|0;c[l>>2]=_p(c[l>>2]|0,k)|0;b=b+204|0;c[b>>2]=_p(c[b>>2]|0,c[m>>2]|0)|0;i=n;return}function Ag(b,e){b=b|0;e=e|0;var f=0.0,h=0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+96|0;if((i|0)>=(j|0))ba();z=B+48|0;o=B+40|0;x=B+32|0;h=B+16|0;n=B+8|0;y=B;t=B+24|0;A=b+128|0;u=c[A>>2]|0;s=c[e+4>>2]|0;c[t>>2]=c[e>>2];c[t+4>>2]=s;c[z>>2]=c[t>>2];c[z+4>>2]=c[t+4>>2];Mj(u,z,y);Ij(c[A>>2]|0);v=+g[y>>2];w=+g[y+4>>2];e=b+64|0;y=b+68|0;u=c[y>>2]|0;c[x>>2]=c[e>>2];c[x+4>>2]=u;c[z>>2]=c[x>>2];c[z+4>>2]=c[x+4>>2];Ko(o,z);l=+g[o>>2];m=+g[o+4>>2];k=v*l-w*m;f=w*l+v*m;if((k!=k|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(h,l,m,v,w);k=+g[h>>2];f=+g[h+4>>2]}g[n>>2]=k;g[n+4>>2]=f;c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];m=+Bo(z);m=m*+((c[b+4>>2]|0)>>>0);x=b+72|0;g[x>>2]=m;g[e>>2]=v;g[y>>2]=w;g[o>>2]=0.0;if(!(xg(b,m,o)|0)){i=B;return}t=b+176|0;u=((d[t>>0]|0)<<1|+g[o>>2]>0.0)&255;a[t>>0]=u;t=b+228|0;e=b+200|0;a[(c[e>>2]|0)+((c[t>>2]|0)>>>3)>>0]=u;u=(c[t>>2]|0)+1|0;c[t>>2]=u;if((u|0)!=(c[b+192>>2]<<3|0)){i=B;return}h=b+204|0;r=Kk(c[b+208>>2]|0,c[e>>2]|0,c[h>>2]|0)|0;c[b+212>>2]=r;s=c[b+16>>2]|0;if(s|0){p=b+24|0;g[b+28>>2]=+yp(+g[b+120>>2])*20.0;g[p>>2]=0.0;c[b+36>>2]=0;c[b+40>>2]=0;c[b+44>>2]=0;c[b+48>>2]=1;c[b+52>>2]=c[b+180>>2];c[b+56>>2]=c[b+184>>2];c[b+60>>2]=c[b+188>>2];t=c[b+164>>2]|0;u=c[b+172>>2]|0;n=c[h>>2]|0;e=c[b+196>>2]|0;h=c[b+20>>2]|0;o=z;q=o+40|0;do{c[o>>2]=c[p>>2];o=o+4|0;p=p+4|0}while((o|0)<(q|0));ob[s&1](t,u,n,e,r,z,h)|0}z=b+216|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;rk(c[b+124>>2]|0);ul(c[b+108>>2]|0);Dj(c[A>>2]|0);g[b+64>>2]=0.0;g[y>>2]=0.0;g[x>>2]=0.0;pe(c[b+76>>2]|0);pe(c[b+80>>2]|0);g[b+88>>2]=0.0;i=B;return}function Bg(a){a=a|0;var b=0;b=a+236|0;if(c[b>>2]|0){a=a+232|0;c[a>>2]=1;c[b>>2]=1;return}c[a+240>>2]=qk(2e3)|0;c[a+244>>2]=lk(2e3)|0;c[a+248>>2]=lk(2e3)|0;c[a+252>>2]=lk(2e3)|0;a=a+232|0;c[a>>2]=1;c[b>>2]=1;return}function Cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=i;i=i+96|0;if((i|0)>=(j|0))ba();n=p+80|0;m=p+64|0;k=p+48|0;o=p+24|0;f=p+16|0;e=p+8|0;d=p;if(!(c[a+236>>2]|0)){Qp(28017,86,1,c[2348]|0)|0;i=p;return}l=Ep(b,37318)|0;if(!l){o=c[2348]|0;c[d>>2]=b;Kp(o,28104,d)|0;i=p;return}c[e>>2]=b;Kp(l,28173,e)|0;Qp(37886,2,1,l)|0;Qp(37457,11,1,l)|0;Qp(28200,12,1,l)|0;c[f>>2]=2e3;Kp(l,28213,f)|0;Qp(28232,23,1,l)|0;Qp(28256,26,1,l)|0;sk(c[a+240>>2]|0,f);d=0;do{e=c[f>>2]|0;r=+g[e+(d<<3)>>2];q=+g[e+(d<<3)+4>>2];d=d+1|0;c[o>>2]=d;h[o+8>>3]=r;h[o+16>>3]=q;Kp(l,37712,o)|0}while((d|0)!=2e3);Qp(37886,2,1,l)|0;Qp(37741,8,1,l)|0;Qp(28283,48,1,l)|0;Qp(37815,30,1,l)|0;Qp(37886,2,1,l)|0;Qp(28332,27,1,l)|0;nk(c[a+244>>2]|0,o);d=0;do{r=+g[(c[o>>2]|0)+(d<<2)>>2];d=d+1|0;c[k>>2]=d;h[k+8>>3]=r;Kp(l,28360,k)|0}while((d|0)!=2e3);Qp(37886,2,1,l)|0;Qp(37741,8,1,l)|0;Qp(28379,23,1,l)|0;Qp(28403,23,1,l)|0;Qp(37886,2,1,l)|0;Qp(28427,27,1,l)|0;nk(c[a+248>>2]|0,o);d=0;do{r=+g[(c[o>>2]|0)+(d<<2)>>2];d=d+1|0;c[m>>2]=d;h[m+8>>3]=r;Kp(l,28455,m)|0}while((d|0)!=2e3);Qp(37886,2,1,l)|0;Qp(37741,8,1,l)|0;Qp(28474,23,1,l)|0;Qp(28498,21,1,l)|0;Qp(37886,2,1,l)|0;Hp(l)|0;c[n>>2]=b;Rp(28520,n)|0;i=p;return}function Dg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if(a>>>0<2){Qp(28566,75,1,c[2348]|0)|0;kb(1)}if(a&1|0){Qp(28642,69,1,c[2348]|0)|0;kb(1)}j=Xp(184)|0;c[j>>2]=a;k=j+4|0;c[k>>2]=b;l=j+8|0;c[l>>2]=d;b=a+b|0;i=j+36|0;c[i>>2]=b;c[j+40>>2]=Xp(a<<3)|0;c[j+44>>2]=Xp(b<<3)|0;g=j+48|0;c[g>>2]=b;b=Xp(a)|0;h=j+12|0;c[h>>2]=b;if(!e){_i(a,b);d=c[h>>2]|0;b=c[j>>2]|0}else{fq(b|0,e|0,a|0)|0;d=b;b=a}$i(d,b,j+16|0,j+20|0,j+24|0);a=j+52|0;c[a>>2]=aj(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[h>>2]|0)|0;l=j+64|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[j+84>>2]=8;Eg(j,0);c[j+104>>2]=1;l=Ck(1,1,1,1)|0;c[j+100>>2]=l;l=Fk(l)|0;c[j+120>>2]=l;c[j+112>>2]=Xp(l)|0;c[j+124>>2]=1;c[j+116>>2]=Xp(4)|0;c[j+108>>2]=di(48)|0;Gg(j,f);f=j+128|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[g>>2]=c[i>>2];cj(c[a>>2]|0);return j|0}function Eg(a,b){a=a|0;b=b|0;var d=0;b=(b|0)==0?604:b;if(((c[b>>2]|0)+-1|0)>>>0>5){Qp(28712,67,1,c[2348]|0)|0;kb(1)}if(!(c[b+4>>2]|0)){d=c[2348]|0;Qp(28780,67,1,d)|0;kb(1)}if(!(c[b+8>>2]|0)){d=c[2348]|0;Qp(28780,67,1,d)|0;kb(1)}if(!(c[b+12>>2]|0)){Qp(28848,74,1,c[2348]|0)|0;kb(1)}else{gq(a+168|0,b|0,16)|0;Fg(a,c[a+84>>2]|0);return}}function Fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();g=k+8|0;h=k;c[a+84>>2]=b;e=b+6|0;b=a+88|0;c[b>>2]=e;d=a+72|0;c[d>>2]=_p(c[d>>2]|0,e)|0;d=a+68|0;e=c[d>>2]|0;if(e|0)Ek(e);b=Ck(c[b>>2]|0,c[a+168>>2]|0,c[a+172>>2]|0,c[a+176>>2]|0)|0;c[d>>2]=b;b=Fk(b)|0;e=a+92|0;c[e>>2]=b;f=a+76|0;c[f>>2]=_p(c[f>>2]|0,b)|0;f=a+180|0;Vp(g,c[e>>2]<<3,c[636+(c[f>>2]<<4)+12>>2]|0);e=((c[g+4>>2]|0)!=0&1)+(c[g>>2]|0)|0;b=a+96|0;c[b>>2]=e;d=a+80|0;c[d>>2]=_p(c[d>>2]|0,e)|0;d=a+64|0;e=c[d>>2]|0;if(e|0)Hi(e);c[d>>2]=di(c[f>>2]|0)|0;Vp(h,c[b>>2]|0,c[a+24>>2]|0);c[a+56>>2]=((c[h+4>>2]|0)!=0&1)+(c[h>>2]|0);i=k;return}function Gg(a,b){a=a|0;b=b|0;var d=0;while(1)if(!b)b=588;else break;if(((c[b>>2]|0)+-1|0)>>>0>5){Qp(28712,67,1,c[2348]|0)|0;kb(1)}if(!(c[b+4>>2]|0)){d=c[2348]|0;Qp(28780,67,1,d)|0;kb(1)}if(!(c[b+8>>2]|0)){d=c[2348]|0;Qp(28780,67,1,d)|0;kb(1)}if(!(c[b+12>>2]|0)){Qp(28848,74,1,c[2348]|0)|0;kb(1)}else{gq(a+152|0,b|0,16)|0;Hg(a);return}}function Hg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();g=b+8|0;e=b;f=a+100|0;d=Dk(c[f>>2]|0,c[a+104>>2]|0,c[a+152>>2]|0,c[a+156>>2]|0,c[a+160>>2]|0)|0;c[f>>2]=d;d=Fk(d)|0;f=a+120|0;c[f>>2]=d;h=a+112|0;c[h>>2]=_p(c[h>>2]|0,d)|0;h=a+108|0;d=a+164|0;c[h>>2]=Gi(c[h>>2]|0,c[d>>2]|0)|0;Vp(g,c[f>>2]<<3,c[636+(c[d>>2]<<4)+12>>2]|0);g=((c[g+4>>2]|0)!=0&1)+(c[g>>2]|0)|0;d=a+124|0;c[d>>2]=g;f=a+116|0;c[f>>2]=_p(c[f>>2]|0,g<<2)|0;Vp(e,c[d>>2]|0,c[a+24>>2]|0);d=c[e>>2]|0;e=c[e+4>>2]|0;c[a+60>>2]=((e>>>0>0|(e|0)==0&d>>>0>4294967295)&1)+d;i=b;return}function Ig(a){a=a|0;var b=0;b=a+128|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[a+48>>2]=c[a+36>>2];cj(c[a+52>>2]|0);return}function Jg(a){a=a|0;bj(c[a+52>>2]|0);Ek(c[a+68>>2]|0);Hi(c[a+64>>2]|0);Ek(c[a+100>>2]|0);Hi(c[a+108>>2]|0);Yp(c[a+112>>2]|0);Yp(c[a+116>>2]|0);Yp(c[a+40>>2]|0);Yp(c[a+44>>2]|0);Yp(c[a+12>>2]|0);Yp(c[a+72>>2]|0);Yp(c[a+76>>2]|0);Yp(c[a+80>>2]|0);Yp(a);return}function Kg(a){a=a|0;return c[a+136>>2]|0}function Lg(a){a=a|0;return (c[a+56>>2]|0)+3+(c[a+60>>2]|0)|0}function Mg(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=b+128|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[b+48>>2]=c[b+36>>2];cj(c[b+52>>2]|0);m=b+104|0;if((c[m>>2]|0)!=(g|0)){c[m>>2]=g;Hg(b)}c[b+136>>2]=1;g=b+72|0;h=c[g>>2]|0;k=b+84|0;l=c[k>>2]|0;if(!e)eq(h|0,0,l|0)|0;else gq(h|0,e|0,l|0)|0;e=c[k>>2]|0;a[(c[g>>2]|0)+e>>0]=105;a[(c[g>>2]|0)+(e+1)>>0]=(c[m>>2]|0)>>>8;a[(c[g>>2]|0)+(e+2)>>0]=c[m>>2];m=b+164|0;a[(c[g>>2]|0)+(e+3)>>0]=c[m>>2];l=e+4|0;a[(c[g>>2]|0)+l>>0]=c[b+152>>2]<<5;l=(c[g>>2]|0)+l|0;a[l>>0]=d[l>>0]|0|c[b+156>>2]&31;a[(c[g>>2]|0)+(e+5)>>0]=c[b+160>>2]&31;e=b+76|0;Jk(c[b+68>>2]|0,c[g>>2]|0,c[e>>2]|0);l=b+92|0;Nj(c[e>>2]|0,c[l>>2]|0);ek(c[e>>2]|0,8,c[l>>2]|0,c[b+80>>2]|0,c[636+(c[b+180>>2]<<4)+12>>2]|0,c[b+96>>2]|0,n);l=b+112|0;Jk(c[b+100>>2]|0,f,c[l>>2]|0);f=b+116|0;e=b+124|0;eq(c[f>>2]|0,0,c[e>>2]<<2|0)|0;bk(c[l>>2]|0,c[b+120>>2]|0,c[636+(c[m>>2]<<4)+12>>2]|0,c[e>>2]|0,c[f>>2]|0);i=n;return}function Ng(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!d){i=a+140|0;i=c[i>>2]|0;return i|0}f=a+48|0;g=a+36|0;h=a+44|0;i=0;do{e=c[f>>2]|0;if(e>>>0>=(c[g>>2]|0)>>>0){Og(a);c[f>>2]=0;e=0}c[f>>2]=e+1;k=c[h>>2]|0;j=c[k+(e<<3)+4>>2]|0;c[b+(i<<3)>>2]=c[k+(e<<3)>>2];c[b+(i<<3)+4>>2]=j;i=i+1|0}while((i|0)!=(d|0));k=a+140|0;k=c[k>>2]|0;return k|0}function Og(a){a=a|0;var b=0,d=0,e=0,f=0,h=0;b=a+128|0;c[b>>2]=(c[b>>2]|0)+1;f=a+132|0;switch(c[f>>2]|0){case 0:{dj(c[a+52>>2]|0,c[a+44>>2]|0);c[f>>2]=1;return}case 1:{ej(c[a+52>>2]|0,c[a+44>>2]|0);c[f>>2]=2;return}case 2:{fj(c[a+52>>2]|0,c[a+44>>2]|0);c[b>>2]=0;c[f>>2]=3;return}case 3:{Pg(a);return}case 4:{Qg(a);return}case 5:{d=a+36|0;b=a+44|0;if(c[d>>2]|0){e=0;do{h=c[b>>2]|0;g[h+(e<<3)>>2]=0.0;g[h+(e<<3)+4>>2]=0.0;e=e+1|0}while(e>>>0<(c[d>>2]|0)>>>0)}hj(c[a+52>>2]|0,c[b>>2]|0);c[a+140>>2]=1;c[a+136>>2]=0;c[f>>2]=6;return}case 6:{e=a+36|0;if(!(c[e>>2]|0))return;b=a+44|0;d=0;do{h=c[b>>2]|0;g[h+(d<<3)>>2]=0.0;g[h+(d<<3)+4>>2]=0.0;d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0);return}default:{Qp(28923,74,1,c[2348]|0)|0;kb(1)}}}function Pg(b){b=b|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[b>>2]|0))e=b+40|0;else{i=b+12|0;j=b+144|0;k=b+96|0;l=b+64|0;m=b+80|0;e=b+40|0;n=0;do{do if((a[(c[i>>2]|0)+n>>0]|0)==2){f=c[j>>2]|0;h=c[l>>2]|0;if(f>>>0<(c[k>>2]|0)>>>0){c[j>>2]=f+1;Li(h,d[(c[m>>2]|0)+f>>0]|0,(c[e>>2]|0)+(n<<3)|0);break}else{h=Ii(h)|0;Li(c[l>>2]|0,h,(c[e>>2]|0)+(n<<3)|0);break}}else{h=c[e>>2]|0;g[h+(n<<3)>>2]=0.0;g[h+(n<<3)+4>>2]=0.0}while(0);n=n+1|0}while(n>>>0<(c[b>>2]|0)>>>0)}gj(c[b+52>>2]|0,c[e>>2]|0,c[b+44>>2]|0);e=b+128|0;if((c[e>>2]|0)!=(c[b+56>>2]|0))return;c[e>>2]=0;c[b+132>>2]=4;return}function Qg(b){b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!(c[b>>2]|0))d=b+40|0;else{h=b+12|0;i=b+148|0;j=b+124|0;k=b+108|0;l=b+116|0;d=b+40|0;m=0;do{do if((a[(c[h>>2]|0)+m>>0]|0)==2){e=c[i>>2]|0;f=c[k>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;Li(f,c[(c[l>>2]|0)+(e<<2)>>2]|0,(c[d>>2]|0)+(m<<3)|0);break}else{f=Ii(f)|0;Li(c[k>>2]|0,f,(c[d>>2]|0)+(m<<3)|0);break}}else{f=c[d>>2]|0;g[f+(m<<3)>>2]=0.0;g[f+(m<<3)+4>>2]=0.0}while(0);m=m+1|0}while(m>>>0<(c[b>>2]|0)>>>0)}gj(c[b+52>>2]|0,c[d>>2]|0,c[b+44>>2]|0);if((c[b+128>>2]|0)!=(c[b+60>>2]|0))return;c[b+132>>2]=5;return}function Rg(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0;i=Xp(232)|0;if(a>>>0>=8){if(a&1|0){Qp(29060,70,1,c[2348]|0)|0;kb(1)}if(b>>>0>a>>>0){Qp(29131,92,1,c[2348]|0)|0;kb(1)}}else Qp(28998,61,1,c[2348]|0)|0;c[i>>2]=a;c[i+4>>2]=b;c[i+8>>2]=d;c[i+156>>2]=f;c[i+160>>2]=h;f=Xp(a)|0;h=i+12|0;c[h>>2]=f;if(!e){_i(a,f);f=c[h>>2]|0;h=c[i>>2]|0}else{fq(f|0,e|0,a|0)|0;h=a}$i(f,h,i+16|0,i+20|0,i+24|0);h=i+208|0;c[h>>2]=ij(a,b,d,e,5,i)|0;d=i+40|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[i+60>>2]=8;c[i+36>>2]=0;Wg(i,0);c[i+96>>2]=48;c[i+100>>2]=2;d=i+104|0;c[d>>2]=1;a=i+108|0;c[a>>2]=1;b=i+112|0;c[b>>2]=1;e=i+116|0;c[e>>2]=1;c[i+128>>2]=di(48)|0;c[i+120>>2]=0;e=Ck(c[d>>2]|0,c[a>>2]|0,c[b>>2]|0,c[e>>2]|0)|0;c[i+124>>2]=e;e=Fk(e)|0;c[i+140>>2]=e;c[i+132>>2]=Xp(e)|0;d=c[d>>2]|0;c[i+136>>2]=Xp(d)|0;c[i+152>>2]=Xp(d<<3)|0;c[i+144>>2]=0;d=i+212|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;g[i+204>>2]=9.999999960041972e-13;zl(i+164|0);jj(c[h>>2]|0);return i|0}function Sg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=e+212|0;c[b>>2]=(c[b>>2]|0)+1;switch(c[e+216>>2]|0){case 0:{Tg(e,a);return 0}case 1:{Vg(e,a);return 0}default:{Qp(29705,81,1,c[2348]|0)|0;kb(1)}}return 0}function Tg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;y=i;i=i+64|0;if((i|0)>=(j|0))ba();w=y+24|0;t=y;h=y+16|0;k=y+8|0;e=c[b>>2]|0;if(!e){i=y;return}n=b+12|0;o=b+36|0;p=b+40|0;q=k+4|0;r=b+220|0;s=b+56|0;x=b+204|0;v=b+72|0;l=b+92|0;m=h+4|0;f=0;while(1){if((a[(c[n>>2]|0)+f>>0]|0)==2){if(!(c[o>>2]|0)){e=c[p>>2]|0;z=c[d+(f<<3)+4>>2]|0;c[k>>2]=c[d+(f<<3)>>2];c[q>>2]=z;c[w>>2]=c[k>>2];c[w+4>>2]=c[k+4>>2];Mi(e,w,t);a[(c[s>>2]|0)+(c[r>>2]|0)>>0]=c[t>>2]}else{e=c[p>>2]|0;A=c[d+(f<<3)+4>>2]|0;z=_(c[r>>2]|0,c[636+(c[l>>2]<<4)+12>>2]|0)|0;z=(c[s>>2]|0)+z|0;c[h>>2]=c[d+(f<<3)>>2];c[m>>2]=A;c[w>>2]=c[h>>2];c[w+4>>2]=c[h+4>>2];Ni(e,w,t,z)}c[r>>2]=(c[r>>2]|0)+1;B=+Ri(c[p>>2]|0);g[x>>2]=+g[x>>2]+B*B;if((c[r>>2]|0)==(c[v>>2]|0))break;e=c[b>>2]|0}f=f+1|0;if(f>>>0>=e>>>0){u=13;break}}if((u|0)==13){i=y;return}Ug(b);p=b+164|0;g[p>>2]=+yp(+g[x>>2]/+((c[v>>2]|0)>>>0))*10.0;e=b+76|0;if(!(c[e>>2]|0)){m=b+208|0;g[b+168>>2]=+vj(c[m>>2]|0);g[b+172>>2]=+wj(c[m>>2]|0);n=b+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;c[n+24>>2]=0;n=c[b+156>>2]|0;o=c[b+48>>2]|0;e=c[e>>2]|0;f=c[b+160>>2]|0;h=w;k=p;l=h+40|0;do{c[h>>2]=c[k>>2];h=h+4|0;k=k+4|0}while((h|0)<(l|0));ob[n&1](o,e,0,0,0,w,f)|0;A=b+212|0;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;c[A+16>>2]=0;g[x>>2]=9.999999960041972e-13;zl(p);jj(c[m>>2]|0);i=y;return}else{c[b+216>>2]=1;i=y;return}}function Ug(b){b=b|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q;do if(!(c[b+36>>2]|0)){e=b+52|0;n=b+68|0;ek(c[b+56>>2]|0,c[636+(c[b+92>>2]<<4)+12>>2]|0,c[b+72>>2]|0,c[e>>2]|0,8,c[n>>2]|0,p);f=c[p>>2]|0;if((f|0)==(c[n>>2]|0)){Oj(c[e>>2]|0,f);g=Kk(c[b+44>>2]|0,c[e>>2]|0,c[b+48>>2]|0)|0;o=b+76|0;c[o>>2]=g;break}else Ha(29224,29256,537,29292)}else{g=b+52|0;o=b+68|0;gq(c[g>>2]|0,c[b+56>>2]|0,c[o>>2]|0)|0;Pj(c[g>>2]|0,(c[o>>2]|0)>>>3);g=Lk(c[b+44>>2]|0,c[g>>2]|0,c[b+48>>2]|0)|0;o=b+76|0;c[o>>2]=g}while(0);if(!g){i=q;return}h=c[b+60>>2]|0;e=b+48|0;f=c[e>>2]|0;if((a[f+h>>0]|0)!=105){Qp(29324,68,1,c[2348]|0)|0;c[o>>2]=0;g=0;f=c[e>>2]|0}n=d[f+(h+1)>>0]<<8|d[f+(h+2)>>0];m=a[f+(h+3)>>0]|0;l=m&255;if((m+-1&255)>59){Qp(29393,70,1,c[2348]|0)|0;c[o>>2]=0;i=q;return}k=d[f+(h+4)>>0]|0;e=k>>>5;k=k&31;m=d[f+(h+5)>>0]&31;if((e|0)==7){Qp(29464,74,1,c[2348]|0)|0;c[o>>2]=0;g=0;h=0}else h=e;if(k>>>0>27){Qp(29539,82,1,c[2348]|0)|0;c[o>>2]=0;g=0;f=0}else f=k;if(m>>>0>27){Qp(29622,82,1,c[2348]|0)|0;c[o>>2]=0;i=q;return}if(!g){i=q;return}e=b+96|0;if((l|0)==(c[e>>2]|0))e=b+100|0;else{c[e>>2]=l;e=b+100|0;c[e>>2]=c[636+(l<<4)+12>>2];o=b+128|0;c[o>>2]=Gi(c[o>>2]|0,l)|0}g=b+104|0;c[g>>2]=n;c[b+108>>2]=h;c[b+112>>2]=f;c[b+116>>2]=m;o=b+124|0;f=Dk(c[o>>2]|0,n,h,f,m)|0;c[o>>2]=f;o=(c[b+120>>2]|0)==0;f=Fk(f)|0;e=c[e>>2]|0;if(o){o=b+140|0;c[o>>2]=f;Vp(p,f<<3,e);f=o;e=((c[p+4>>2]|0)!=0&1)+(c[p>>2]|0)|0}else{o=f<<3;f=b+140|0;c[f>>2]=o;Vp(p,o,e);e=((c[p+4>>2]|0)!=0&1)+(c[p>>2]|0)|0}p=b+144|0;c[p>>2]=e;o=b+132|0;c[o>>2]=_p(c[o>>2]|0,c[f>>2]|0)|0;o=b+136|0;c[o>>2]=_p(c[o>>2]|0,c[g>>2]|0)|0;b=b+152|0;c[b>>2]=_p(c[b>>2]|0,c[p>>2]<<3)|0;i=q;return}function Vg(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;C=i;i=i+64|0;if((i|0)>=(j|0))ba();B=C+24|0;u=C;l=C+16|0;m=C+8|0;e=c[b>>2]|0;if(!e){i=C;return}q=b+12|0;r=b+224|0;A=b+152|0;x=b+120|0;s=b+128|0;t=m+4|0;w=b+132|0;n=b+140|0;o=b+228|0;y=b+100|0;z=b+144|0;p=l+4|0;k=0;while(1){if((a[(c[q>>2]|0)+k>>0]|0)==2){f=d+(k<<3)|0;h=d+(k<<3)+4|0;E=c[h>>2]|0;e=c[r>>2]|0;D=c[A>>2]|0;c[D+(e<<3)>>2]=c[f>>2];c[D+(e<<3)+4>>2]=E;e=c[s>>2]|0;f=c[f>>2]|0;h=c[h>>2]|0;if(!(c[x>>2]|0)){c[m>>2]=f;c[t>>2]=h;c[B>>2]=c[m>>2];c[B+4>>2]=c[m+4>>2];Mi(e,B,u);$j(c[w>>2]|0,c[n>>2]|0,c[o>>2]|0,c[y>>2]|0,c[u>>2]|0);c[o>>2]=(c[o>>2]|0)+(c[y>>2]|0)}else{E=_(c[r>>2]|0,c[y>>2]|0)|0;E=(c[w>>2]|0)+E|0;c[l>>2]=f;c[p>>2]=h;c[B>>2]=c[l>>2];c[B+4>>2]=c[l+4>>2];Ni(e,B,u,E)}E=(c[r>>2]|0)+1|0;c[r>>2]=E;if((E|0)==(c[z>>2]|0))break;e=c[b>>2]|0}k=k+1|0;if(k>>>0>=e>>>0){v=16;break}}if((v|0)==16){i=C;return}h=c[b+124>>2]|0;e=c[w>>2]|0;k=b+136|0;f=c[k>>2]|0;if(!(c[x>>2]|0))e=Kk(h,e,f)|0;else e=Lk(h,e,f)|0;f=b+148|0;c[f>>2]=e;e=b+156|0;if(!(c[e>>2]|0)){E=b+212|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;g[b+204>>2]=9.999999960041972e-13;zl(b+164|0);jj(c[b+208>>2]|0);i=C;return}else{r=b+208|0;s=b+164|0;g[b+168>>2]=+vj(c[r>>2]|0);g[b+172>>2]=+wj(c[r>>2]|0);c[b+176>>2]=c[A>>2];c[b+180>>2]=c[z>>2];c[b+184>>2]=c[b+96>>2];c[b+188>>2]=c[y>>2];c[b+192>>2]=c[b+108>>2];c[b+196>>2]=c[b+112>>2];c[b+200>>2]=c[b+116>>2];o=c[e>>2]|0;p=c[b+48>>2]|0;q=c[b+76>>2]|0;n=c[k>>2]|0;m=c[b+104>>2]|0;e=c[f>>2]|0;f=c[b+160>>2]|0;h=B;k=s;l=h+40|0;do{c[h>>2]=c[k>>2];h=h+4|0;k=k+4|0}while((h|0)<(l|0));ob[o&1](p,q,n,m,e,B,f)|0;E=b+212|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;c[E+16>>2]=0;g[b+204>>2]=9.999999960041972e-13;zl(s);jj(c[r>>2]|0);i=C;return}}function Wg(a,b){a=a|0;b=b|0;var d=0;b=(b|0)==0?620:b;if(((c[b>>2]|0)+-1|0)>>>0>5){Qp(29787,76,1,c[2348]|0)|0;kb(1)}if(!(c[b+4>>2]|0)){d=c[2348]|0;Qp(29864,76,1,d)|0;kb(1)}if(!(c[b+8>>2]|0)){d=c[2348]|0;Qp(29864,76,1,d)|0;kb(1)}if(!(c[b+12>>2]|0)){Qp(29941,83,1,c[2348]|0)|0;kb(1)}else{gq(a+80|0,b|0,16)|0;Xg(a,c[a+60>>2]|0);return}}function Xg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;c[a+60>>2]=b;e=b+6|0;b=a+64|0;c[b>>2]=e;d=a+48|0;c[d>>2]=_p(c[d>>2]|0,e)|0;d=a+44|0;e=c[d>>2]|0;if(e|0)Ek(e);b=Ck(c[b>>2]|0,c[a+80>>2]|0,c[a+84>>2]|0,c[a+88>>2]|0)|0;c[d>>2]=b;e=(c[a+36>>2]|0)==0;b=Fk(b)|0;if(e){d=a+68|0;c[d>>2]=b;Vp(f,b<<3,c[636+(c[a+92>>2]<<4)+12>>2]|0);b=((c[f+4>>2]|0)!=0&1)+(c[f>>2]|0)|0;d=c[d>>2]|0}else{d=b<<3;c[a+68>>2]=d;b=d}f=a+72|0;c[f>>2]=b;b=a+52|0;c[b>>2]=_p(c[b>>2]|0,d)|0;b=a+56|0;c[b>>2]=_p(c[b>>2]|0,c[f>>2]|0)|0;b=a+40|0;d=c[b>>2]|0;if(!d){a=a+92|0;a=c[a>>2]|0;a=di(a)|0;c[b>>2]=a;i=g;return}Hi(d);a=a+92|0;a=c[a>>2]|0;a=di(a)|0;c[b>>2]=a;i=g;return}function Yg(a){a=a|0;kj(c[a+208>>2]|0);Ek(c[a+44>>2]|0);Hi(c[a+40>>2]|0);Ek(c[a+124>>2]|0);Hi(c[a+128>>2]|0);Yp(c[a+12>>2]|0);Yp(c[a+132>>2]|0);Yp(c[a+136>>2]|0);Yp(c[a+152>>2]|0);Yp(c[a+48>>2]|0);Yp(c[a+52>>2]|0);Yp(c[a+56>>2]|0);Yp(a);return}function Zg(a,b){a=a|0;b=b|0;c[a+36>>2]=b;Xg(a,c[a+60>>2]|0);return}function _g(a,b){a=a|0;b=b|0;c[a+120>>2]=b;return}function $g(a,b,d){a=a|0;b=b|0;d=d|0;lj(c[a+208>>2]|0,b,d);return}function ah(a){a=a|0;xj(c[a+208>>2]|0);return}function bh(a,b){a=a|0;b=b|0;yj(c[a+208>>2]|0,b);return}function ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!b){Qp(30025,63,1,c[2348]|0)|0;kb(1)}else{d=Xp(96)|0;c[d>>2]=b;h=b<<3;m=Xp(h)|0;i=d+4|0;c[i>>2]=m;fq(m|0,a|0,h|0)|0;g[d+12>>2]=+Bk(m,b);m=1<<(Rh(c[d>>2]<<1)|0);b=d+32|0;c[b>>2]=m;h=m<<3;l=Xp(h)|0;e=d+16|0;c[e>>2]=l;k=Xp(h)|0;a=d+20|0;c[a>>2]=k;f=d+24|0;c[f>>2]=Xp(h)|0;j=d+28|0;c[j>>2]=Xp(h)|0;h=d+36|0;c[h>>2]=Mk(m,l,k,1,0)|0;c[d+40>>2]=Mk(c[b>>2]|0,c[f>>2]|0,c[j>>2]|0,-1,0)|0;j=c[b>>2]<<3;f=d+8|0;c[f>>2]=Xp(j)|0;eq(c[e>>2]|0,0,j|0)|0;gq(c[e>>2]|0,c[i>>2]|0,c[d>>2]<<3|0)|0;el(c[h>>2]|0);gq(c[f>>2]|0,c[a>>2]|0,c[b>>2]<<3|0)|0;a=c[b>>2]|0;c[d+44>>2]=a>>>1;c[d+56>>2]=0;g[d+60>>2]=0.0;g[d+64>>2]=0.0;c[d+88>>2]=0;c[d+92>>2]=0;eq(c[e>>2]|0,0,a<<3|0)|0;a=d+72|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;g[d+48>>2]=.5;b=~~(+((c[b>>2]|0)>>>0)*.30000001192092896/6.283185307179586);c[d+52>>2]=(b|0)<0?0:b;return d|0}return 0}function dh(a,b){a=a|0;b=+b;var d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;if(b<=0.0|b>2.0){a=c[2348]|0;h[d>>3]=b;Kp(a,30089,d)|0;i=e;return}else{g[a+48>>2]=b;i=e;return}}function eh(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();m=r+8|0;n=r;if(!b){Qp(30141,70,1,c[2348]|0)|0;kb(1)}if((e+-2|0)>>>0>78){Qp(30212,76,1,c[2348]|0)|0;kb(1)}if((f+-1|0)>>>0>99){Qp(30289,71,1,c[2348]|0)|0;kb(1)}if(h<0.0|h>1.0){Qp(30361,80,1,c[2348]|0)|0;kb(1)}o=(f<<1)+b|0;p=_(o,e)|0;q=Xp(p<<3)|0;d=Ee(d,e,f,h,0.0)|0;if(!o){Fe(d);b=ch(q,p)|0;Yp(q);i=r;return b|0}f=n+4|0;l=0;do{if(l>>>0>>0){h=+g[a+(l<<3)>>2];k=+g[a+(l<<3)+4>>2]}else{h=0.0;k=0.0}s=q+((_(l,e)|0)<<3)|0;g[n>>2]=h;g[f>>2]=k;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];Je(d,m,s);l=l+1|0}while((l|0)!=(o|0));Fe(d);s=ch(q,p)|0;Yp(q);i=r;return s|0}function fh(a){a=a|0;Yp(c[a+4>>2]|0);Yp(c[a+8>>2]|0);Yp(c[a+16>>2]|0);Yp(c[a+20>>2]|0);Yp(c[a+24>>2]|0);Yp(c[a+28>>2]|0);dl(c[a+36>>2]|0);dl(c[a+40>>2]|0);Yp(a);return}function gh(a){a=a|0;return}function hh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();d=g+16|0;e=g+8|0;f=g;switch(c[a+88>>2]|0){case 0:{f=c[b+4>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=f;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];ih(a,d);break}case 1:{e=c[b+4>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];jh(a,d);break}default:{}}d=a+92|0;if(!(c[d>>2]|0)){a=0;i=g;return a|0}c[d>>2]=0;a=c[a+28>>2]|0;i=g;return a|0}function ih(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0;Q=i;i=i+48|0;if((i|0)>=(j|0))ba();E=Q+40|0;F=Q+32|0;G=Q+24|0;H=Q+16|0;I=Q+8|0;J=Q;N=c[b>>2]|0;M=c[b+4>>2]|0;P=a+44|0;b=c[P>>2]|0;c[P>>2]=b+1;L=a+16|0;K=c[L>>2]|0;c[K+(b<<3)>>2]=N;c[K+(b<<3)+4>>2]=M;p=(c[k>>2]=N,+g[k>>2]);s=(c[k>>2]=M,+g[k>>2]);M=a+64|0;g[M>>2]=+g[M>>2]+(p*p+s*s);N=a+32|0;b=c[N>>2]|0;if((c[P>>2]|0)>>>0>>0){i=Q;return}c[P>>2]=b>>>1;el(c[a+36>>2]|0);K=a+60|0;p=+O(+(+g[K>>2]+ +g[M>>2]));f=c[N>>2]|0;s=+(f>>>0);s=s*(p*+O(+(+((c[a>>2]|0)>>>0)/s)));s=1.0/(s*+O(+(+g[a+12>>2])));t=a+52|0;D=c[t>>2]|0;b=0-D|0;if((D|0)<(b|0)){e=0;b=0;d=0.0}else{u=a+40|0;v=a+28|0;w=I+4|0;x=J+4|0;y=a+20|0;z=a+8|0;A=G+4|0;B=F+4|0;C=H+4|0;D=a+24|0;r=b;e=0;b=0;d=0.0;while(1){if(f|0){q=0;do{R=((q-r+f|0)>>>0)%(f>>>0)|0;S=c[y>>2]|0;m=+g[S+(q<<3)>>2];n=+g[S+(q<<3)+4>>2];S=c[z>>2]|0;f=c[S+(R<<3)+4>>2]|0;c[G>>2]=c[S+(R<<3)>>2];c[A>>2]=f;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];Ko(F,E);o=+g[F>>2];p=+g[B>>2];l=m*o-n*p;h=n*o+m*p;if((l!=l|0.0!=0.0)&(h!=h|0.0!=0.0)){ao(H,m,n,o,p);l=+g[H>>2];h=+g[C>>2]}f=c[D>>2]|0;g[f+(q<<3)>>2]=l;g[f+(q<<3)+4>>2]=h;q=q+1|0;f=c[N>>2]|0}while(q>>>0>>0)}el(c[u>>2]|0);S=c[v>>2]|0;R=c[N>>2]|0;g[I>>2]=s;g[w>>2]=0.0;c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];fk(S,R,E,S);if(!(c[N>>2]|0))f=0;else{q=0;do{S=c[v>>2]|0;f=c[S+(q<<3)+4>>2]|0;c[J>>2]=c[S+(q<<3)>>2];c[x>>2]=f;c[E>>2]=c[J>>2];c[E+4>>2]=c[J+4>>2];p=+wo(E);f=p>d;d=f?p:d;e=f?q:e;b=f?r:b;q=q+1|0;f=c[N>>2]|0}while(q>>>0>>0)}if((r|0)<(c[t>>2]|0))r=r+1|0;else break}}S=a+56|0;c[S>>2]=(c[S>>2]|0)+1;if(d>+g[a+48>>2]?e>>>0<(f-(c[a>>2]|0)|0)>>>0:0){c[a+88>>2]=1;c[a+68>>2]=b;S=c[L>>2]|0;gq(S|0,S+(e<<3)|0,f-e<<3|0)|0;c[P>>2]=(c[N>>2]|0)-e;i=Q;return}R=c[L>>2]|0;S=f>>>1;gq(R|0,R+(S<<3)|0,S<<3|0)|0;c[K>>2]=c[M>>2];g[M>>2]=0.0;i=Q;return}function jh(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,h=0,k=0.0,l=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;U=i;i=i+144|0;if((i|0)>=(j|0))ba();S=U+136|0;x=U+128|0;y=U+120|0;z=U+112|0;A=U+104|0;B=U+96|0;C=U+88|0;E=U+80|0;F=U+72|0;G=U+64|0;H=U+56|0;I=U+48|0;J=U+40|0;K=U+32|0;L=U+24|0;M=U+16|0;N=U+8|0;T=U;v=c[b>>2]|0;w=c[b+4>>2]|0;P=a+44|0;R=c[P>>2]|0;c[P>>2]=R+1;Q=a+16|0;D=c[Q>>2]|0;c[D+(R<<3)>>2]=v;c[D+(R<<3)+4>>2]=w;R=a+32|0;if((c[P>>2]|0)>>>0<(c[R>>2]|0)>>>0){i=U;return}D=a+36|0;el(c[D>>2]|0);b=c[R>>2]|0;if(b|0){h=a+68|0;m=a+20|0;n=a+8|0;r=y+4|0;u=x+4|0;v=z+4|0;w=a+24|0;f=0;do{V=((b+f-(c[h>>2]|0)|0)>>>0)%(b>>>0)|0;W=c[m>>2]|0;k=+g[W+(f<<3)>>2];l=+g[W+(f<<3)+4>>2];W=c[n>>2]|0;b=c[W+(V<<3)+4>>2]|0;c[y>>2]=c[W+(V<<3)>>2];c[r>>2]=b;c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];Ko(x,S);o=+g[x>>2];p=+g[u>>2];e=k*o-l*p;d=l*o+k*p;if((e!=e|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(z,k,l,o,p);e=+g[z>>2];d=+g[v>>2]}b=c[w>>2]|0;g[b+(f<<3)>>2]=e;g[b+(f<<3)+4>>2]=d;f=f+1|0;b=c[R>>2]|0}while(f>>>0>>0)}el(c[a+40>>2]|0);V=(c[R>>2]|0)+-1|0;v=a+28|0;z=c[v>>2]|0;W=c[z+(V<<3)+4>>2]|0;c[A>>2]=c[z+(V<<3)>>2];c[A+4>>2]=W;c[S>>2]=c[A>>2];c[S+4>>2]=c[A+4>>2];q=+O(+(+wo(S)));W=c[v>>2]|0;V=c[W+4>>2]|0;c[B>>2]=c[W>>2];c[B+4>>2]=V;c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];p=+O(+(+wo(S)));V=c[v>>2]|0;W=c[V+12>>2]|0;c[C>>2]=c[V+8>>2];c[C+4>>2]=W;c[S>>2]=c[C>>2];c[S+4>>2]=c[C+4>>2];t=+O(+(+wo(S)));s=(q+t)*.5-p;q=(t-q)*.5;t=-q/(s*2.0);g[a+72>>2]=t;t=p+(q*t+t*(s*t));W=c[R>>2]|0;g[a+76>>2]=t*t/(+(W>>>0)*+g[a+12>>2]);gq(c[v>>2]|0,c[Q>>2]|0,W<<3|0)|0;if(c[R>>2]|0){b=a+4|0;f=F+4|0;h=E+4|0;m=G+4|0;u=0;do{if(u>>>0<(c[a>>2]|0)>>>0){V=c[b>>2]|0;W=c[V+(u<<3)+4>>2]|0;c[F>>2]=c[V+(u<<3)>>2];c[f>>2]=W;c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];Ko(E,S);o=+g[E>>2];p=+g[h>>2]}else{o=0.0;p=0.0}r=c[Q>>2]|0;n=r+(u<<3)|0;k=+g[n>>2];r=r+(u<<3)+4|0;l=+g[r>>2];e=o*k-p*l;d=p*k+o*l;if((e!=e|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(G,k,l,o,p);e=+g[G>>2];d=+g[m>>2]}g[n>>2]=e;g[r>>2]=d;u=u+1|0}while(u>>>0<(c[R>>2]|0)>>>0)}el(c[D>>2]|0);n=a+20|0;if(!(c[R>>2]|0)){f=0;b=0;d=0.0}else{h=H+4|0;m=0;b=0;d=0.0;do{W=c[n>>2]|0;f=c[W+(m<<3)+4>>2]|0;c[H>>2]=c[W+(m<<3)>>2];c[h>>2]=f;c[S>>2]=c[H>>2];c[S+4>>2]=c[H+4>>2];t=+wo(S);f=t>d;b=f?m:b;d=f?t:d;m=m+1|0;f=c[R>>2]|0}while(m>>>0>>0)}H=((b+-1+f|0)>>>0)%(f>>>0)|0;W=((b+1|0)>>>0)%(f>>>0)|0;f=c[n>>2]|0;V=c[f+(H<<3)+4>>2]|0;c[I>>2]=c[f+(H<<3)>>2];c[I+4>>2]=V;c[S>>2]=c[I>>2];c[S+4>>2]=c[I+4>>2];s=+wo(S);V=c[n>>2]|0;f=c[V+(W<<3)+4>>2]|0;c[J>>2]=c[V+(W<<3)>>2];c[J+4>>2]=f;c[S>>2]=c[J>>2];c[S+4>>2]=c[J+4>>2];t=+wo(S);t=+(b>>>0)+-((t-s)*.5)/(((s+t)*.5-d)*2.0);f=c[R>>2]|0;d=+(f>>>0);d=(b>>>0>f>>>1>>>0?t-d:t)*2.0*3.141592653589793/d;f=a+80|0;g[f>>2]=d;a:do if(!(c[a>>2]|0)){e=0.0;d=0.0}else{h=K+4|0;m=M+4|0;n=L+4|0;r=N+4|0;k=d;b=0;e=0.0;d=0.0;while(1){W=c[Q>>2]|0;s=+g[W+(b<<3)>>2];t=+g[W+(b<<3)+4>>2];q=k*-0.0;o=-k;p=+(b>>>0);l=p*q-q;k=p*o+q*0.0;if((l!=l|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(K,q,o,p,0.0);l=+g[K>>2];k=+g[h>>2]}g[M>>2]=l;g[m>>2]=k;c[S>>2]=c[M>>2];c[S+4>>2]=c[M+4>>2];Io(L,S);o=+g[L>>2];p=+g[n>>2];k=s*o-t*p;l=t*o+s*p;if((k!=k|0.0!=0.0)&(l!=l|0.0!=0.0)){ao(N,s,t,o,p);k=+g[N>>2];l=+g[r>>2]}e=e+k;d=d+l;b=b+1|0;if(b>>>0>=(c[a>>2]|0)>>>0)break a;k=+g[f>>2]}}while(0);g[T>>2]=e;g[T+4>>2]=d;c[S>>2]=c[T>>2];c[S+4>>2]=c[T+4>>2];g[a+84>>2]=+Bo(S);c[a+92>>2]=1;W=(c[R>>2]|0)>>>1;gq(c[Q>>2]|0,(c[v>>2]|0)+(W<<3)|0,W<<3|0)|0;c[a+88>>2]=0;g[a+60>>2]=+Bk(c[Q>>2]|0,(c[R>>2]|0)>>>1);g[a+64>>2]=0.0;c[P>>2]=(c[R>>2]|0)>>>1;i=U;return}function kh(a){a=a|0;return c[a+32>>2]|0}function lh(a){a=a|0;return +(+g[a+72>>2])}function mh(a){a=a|0;return +(+g[a+76>>2])}function nh(a){a=a|0;return +(+g[a+80>>2])}function oh(a){a=a|0;return +(+g[a+84>>2])}function ph(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+16|0;if((i|0)>=(j|0))ba();e=a;b=Xp(36)|0;c[b>>2]=di(48)|0;c[b+8>>2]=2;c[b+12>>2]=1;d=Ck(1,1,1,1)|0;c[b+4>>2]=d;d=Fk(d)|0;c[b+24>>2]=d;f=d<<3;c[b+28>>2]=f;Vp(e,f,2);c[b+16>>2]=Xp(((c[e+4>>2]|0)!=0&1)+(c[e>>2]|0)<<1)|0;c[b+32>>2]=d<<1;c[b+20>>2]=Xp(d<<3)|0;i=a;return b|0}function qh(a){a=a|0;Ek(c[a+4>>2]|0);Hi(c[a>>2]|0);Yp(c[a+16>>2]|0);Yp(c[a+20>>2]|0);Yp(a);return}function rh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();l=h;m=a+12|0;c[m>>2]=b;b=Gi(c[a>>2]|0,g)|0;c[a>>2]=b;k=a+8|0;c[k>>2]=Ji(b)|0;b=a+4|0;f=Dk(c[b>>2]|0,c[m>>2]|0,d,e,f)|0;c[b>>2]=f;f=Fk(f)|0;c[a+24>>2]=f;f=f<<3;c[a+28>>2]=f;Vp(l,f,c[k>>2]|0);f=((c[l+4>>2]|0)!=0&1)+(c[l>>2]|0)|0;b=a+32|0;c[b>>2]=f;g=a+16|0;c[g>>2]=_p(c[g>>2]|0,_(c[k>>2]|0,f)|0)|0;a=a+20|0;c[a>>2]=_p(c[a>>2]|0,c[b>>2]<<2)|0;i=h;return 0}function sh(a){a=a|0;return c[a+32>>2]|0}function th(a){a=a|0;return Gk(c[a+4>>2]|0)|0}function uh(a){a=a|0;return Hk(c[a+4>>2]|0)|0}function vh(a){a=a|0;return Ik(c[a+4>>2]|0)|0}function wh(a){a=a|0;return Ki(c[a>>2]|0)|0}function xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=a+20|0;e=c[f>>2]|0;g=a+16|0;Jk(c[a+4>>2]|0,b,c[g>>2]|0);b=a+32|0;eq(c[f>>2]|0,0,c[b>>2]<<2|0)|0;bk(c[g>>2]|0,c[a+24>>2]|0,c[a+8>>2]|0,c[b>>2]|0,e);if(!(c[b>>2]|0))return;e=0;do{Li(c[a>>2]|0,c[(c[f>>2]|0)+(e<<2)>>2]|0,d+(e<<3)|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0);return}function yh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();f=p+16|0;o=p+8|0;g=p;h=a+32|0;if(!(c[h>>2]|0)){n=a+16|0;o=a+4|0;o=c[o>>2]|0;a=c[n>>2]|0;a=Kk(o,a,d)|0;i=p;return a|0}k=g+4|0;e=a+16|0;l=a+24|0;m=a+8|0;n=0;do{q=c[a>>2]|0;r=c[b+(n<<3)+4>>2]|0;c[g>>2]=c[b+(n<<3)>>2];c[k>>2]=r;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];Mi(q,f,o);q=c[m>>2]|0;r=_(q,n)|0;$j(c[e>>2]|0,c[l>>2]|0,r,q,c[o>>2]|0);n=n+1|0}while(n>>>0<(c[h>>2]|0)>>>0);q=a+4|0;q=c[q>>2]|0;r=c[e>>2]|0;r=Kk(q,r,d)|0;i=p;return r|0}function zh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+32|0;if((i|0)>=(j|0))ba();h=r+16|0;q=r+8|0;k=r;l=a+32|0;if(!(c[l>>2]|0)){g=0;f=c[a+8>>2]|0;e=0}else{m=a+16|0;n=k+4|0;o=a+8|0;p=0;e=0;do{g=c[a>>2]|0;s=c[b+(p<<3)+4>>2]|0;f=(c[m>>2]|0)+e|0;c[k>>2]=c[b+(p<<3)>>2];c[n>>2]=s;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];Ni(g,h,q,f);f=c[o>>2]|0;e=f+e|0;p=p+1|0;g=c[l>>2]|0}while(p>>>0>>0)}if((e|0)==(_(f,g)|0)){s=Lk(c[a+4>>2]|0,c[a+16>>2]|0,d)|0;i=r;return s|0}else Ha(30442,30489,315,30520);return 0}function Ah(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();k=o+24|0;d=o+16|0;l=o+8|0;m=o;if(!a){Qp(30545,66,1,c[2348]|0)|0;kb(1)}if(b>>>0<2){Qp(30612,68,1,c[2348]|0)|0;kb(1)}n=Xp(20)|0;c[n>>2]=a;c[n+4>>2]=b;Vp(d,a,b+-1|0);h=((c[d+4>>2]|0)!=0&1)+(c[d>>2]|0)|0;c[n+8>>2]=h;c[n+12>>2]=h+a;b=Xp(h<<3)|0;c[n+16>>2]=b;d=Rj(Rh(h)|0)|0;if(!h){Sj(d);i=o;return n|0}a=m+4|0;e=l+4|0;f=0;do{q=+((Uj(d,2)|0)>>>0)*6.283185307179586*.25+.7853981633974483;g[m>>2]=q*0.0;g[a>>2]=q;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];Io(l,k);p=c[e>>2]|0;c[b+(f<<3)>>2]=c[l>>2];c[b+(f<<3)+4>>2]=p;f=f+1|0}while(f>>>0>>0);Sj(d);i=o;return n|0}function Bh(a){a=a|0;Yp(c[a+16>>2]|0);Yp(a);return}function Ch(a){a=a|0;return c[a+12>>2]|0}function Dh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=a+12|0;if(!(c[g>>2]|0)){f=0;e=0}else{h=a+4|0;i=a+16|0;j=0;f=0;e=0;do{if(!((j>>>0)%((c[h>>2]|0)>>>0)|0)){l=c[i>>2]|0;k=c[l+(e<<3)+4>>2]|0;c[d+(j<<3)>>2]=c[l+(e<<3)>>2];c[d+(j<<3)+4>>2]=k;e=e+1|0}else{l=c[b+(f<<3)+4>>2]|0;c[d+(j<<3)>>2]=c[b+(f<<3)>>2];c[d+(j<<3)+4>>2]=l;f=f+1|0}j=j+1|0}while(j>>>0<(c[g>>2]|0)>>>0)}if((f|0)!=(c[a>>2]|0))Ha(30681,30702,157,30730);if((e|0)==(c[a+8>>2]|0))return;else Ha(30748,30702,158,30730)}function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();l=p+24|0;d=p+16|0;m=p+8|0;n=p;if(!a){Qp(30768,67,1,c[2348]|0)|0;kb(1)}if(b>>>0<2){Qp(30836,69,1,c[2348]|0)|0;kb(1)}o=Xp(48)|0;c[o>>2]=a;c[o+4>>2]=b;Vp(d,a,b+-1|0);f=((c[d+4>>2]|0)!=0&1)+(c[d>>2]|0)|0;h=o+8|0;c[h>>2]=f;c[o+12>>2]=f+a;b=Xp(f<<3)|0;c[o+16>>2]=b;k=Rj(Rh(f)|0)|0;if(!f)b=0;else{d=n+4|0;a=m+4|0;e=0;do{r=+((Uj(k,2)|0)>>>0)*6.283185307179586*.25+.7853981633974483;g[n>>2]=r*0.0;g[d>>2]=r;c[l>>2]=c[n>>2];c[l+4>>2]=c[n+4>>2];Io(m,l);q=c[a>>2]|0;c[b+(e<<3)>>2]=c[m>>2];c[b+(e<<3)+4>>2]=q;e=e+1|0}while(e>>>0>>0);b=c[h>>2]|0}Sj(k);b=1<<(Rh((b>>>1)+b|0)|0);c[o+20>>2]=b;a=b<<3;d=Xp(a)|0;c[o+24>>2]=d;a=Xp(a)|0;c[o+28>>2]=a;c[o+32>>2]=Mk(b,d,a,1,0)|0;a=0;do{g[d+(a<<3)>>2]=0.0;g[d+(a<<3)+4>>2]=0.0;a=a+1|0}while(a>>>0>>0);g[o+36>>2]=0.0;g[o+40>>2]=0.0;g[o+44>>2]=1.0;i=p;return o|0}function Fh(a){a=a|0;Yp(c[a+16>>2]|0);Yp(c[a+24>>2]|0);Yp(c[a+28>>2]|0);dl(c[a+32>>2]|0);Yp(a);return}function Gh(a){a=a|0;return c[a+12>>2]|0}function Hh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;P=i;i=i+144|0;if((i|0)>=(j|0))ba();L=P+128|0;e=P+120|0;k=P+112|0;q=P+104|0;A=P+96|0;B=P+88|0;C=P+80|0;D=P+72|0;F=P+64|0;G=P+56|0;H=P+48|0;E=P+40|0;I=P+32|0;J=P+24|0;M=P+16|0;N=P+8|0;O=P;K=a+8|0;if(c[K>>2]|0){p=a+4|0;r=a+16|0;s=k+4|0;t=e+4|0;v=q+4|0;w=a+24|0;x=0;do{R=_(c[p>>2]|0,x)|0;l=+g[b+(R<<3)>>2];m=+g[b+(R<<3)+4>>2];R=c[r>>2]|0;Q=c[R+(x<<3)+4>>2]|0;c[k>>2]=c[R+(x<<3)>>2];c[s>>2]=Q;c[L>>2]=c[k>>2];c[L+4>>2]=c[k+4>>2];Ko(e,L);n=+g[e>>2];o=+g[t>>2];h=l*n-m*o;f=m*n+l*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(q,l,m,n,o);h=+g[q>>2];f=+g[v>>2]}R=c[w>>2]|0;g[R+(x<<3)>>2]=h;g[R+(x<<3)+4>>2]=f;x=x+1|0}while(x>>>0<(c[K>>2]|0)>>>0)}el(c[a+32>>2]|0);t=a+20|0;s=a+28|0;if(!(c[t>>2]|0)){e=0;k=0;f=0.0}else{p=B+4|0;q=A+4|0;r=0;k=0;f=0.0;do{if(!((r|0)!=0?(Q=c[s>>2]|0,R=c[Q+(r<<3)+4>>2]|0,c[A>>2]=c[Q+(r<<3)>>2],c[q>>2]=R,c[L>>2]=c[A>>2],c[L+4>>2]=c[A+4>>2],!(+wo(L)>f)):0)){R=c[s>>2]|0;k=c[R+(r<<3)+4>>2]|0;c[B>>2]=c[R+(r<<3)>>2];c[p>>2]=k;c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];k=r;f=+wo(L)}r=r+1|0;e=c[t>>2]|0}while(r>>>0>>0)}x=((k+-1+e|0)>>>0)%(e>>>0)|0;w=((k+1|0)>>>0)%(e>>>0)|0;Q=c[s>>2]|0;R=c[Q+(w<<3)+4>>2]|0;c[C>>2]=c[Q+(w<<3)>>2];c[C+4>>2]=R;c[L>>2]=c[C>>2];c[L+4>>2]=c[C+4>>2];y=+wo(L);R=c[s>>2]|0;w=c[R+(x<<3)+4>>2]|0;c[D>>2]=c[R+(x<<3)>>2];c[D+4>>2]=w;c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];z=+wo(L);f=+(k>>>0)+-((y-z)*.5)/(((y+z)*.5-f)*2.0);w=c[t>>2]|0;x=a+4|0;f=(k>>>0>w>>>1>>>0?f-+(w>>>0):f)*2.0*3.141592653589793/+((_(c[x>>2]|0,w)|0)>>>0);w=a+36|0;g[w>>2]=f;a:do if(!(c[K>>2]|0)){h=0.0;f=0.0}else{k=a+24|0;p=F+4|0;q=H+4|0;r=G+4|0;s=E+4|0;l=f;e=0;h=0.0;f=0.0;while(1){R=c[k>>2]|0;y=+g[R+(e<<3)>>2];z=+g[R+(e<<3)+4>>2];u=l*-0.0;n=-l;o=+(e>>>0);m=o*u-u;l=o*n+u*0.0;if((m!=m|0.0!=0.0)&(l!=l|0.0!=0.0)){ao(F,u,n,o,0.0);m=+g[F>>2];l=+g[p>>2]}n=+((c[x>>2]|0)>>>0);g[H>>2]=m*n;g[q>>2]=l*n;c[L>>2]=c[H>>2];c[L+4>>2]=c[H+4>>2];Io(G,L);n=+g[G>>2];o=+g[r>>2];l=y*n-z*o;m=z*n+y*o;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(E,y,z,n,o);l=+g[E>>2];m=+g[s>>2]}h=h+l;f=f+m;e=e+1|0;if(e>>>0>=(c[K>>2]|0)>>>0)break a;l=+g[w>>2]}}while(0);g[I>>2]=h;g[I+4>>2]=f;c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];v=a+40|0;g[v>>2]=+Bo(L);g[J>>2]=h;g[J+4>>2]=f;c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];u=+wo(L);u=u/+((c[K>>2]|0)>>>0);g[a+44>>2]=u;u=1.0/u;q=a+12|0;e=c[q>>2]|0;if(!e){i=P;return}r=N+4|0;s=M+4|0;t=O+4|0;p=0;k=0;do{if((p>>>0)%((c[x>>2]|0)>>>0)|0){l=u*+g[b+(p<<3)>>2];m=u*+g[b+(p<<3)+4>>2];n=+(p>>>0)*+g[w>>2]+ +g[v>>2];g[N>>2]=n*-0.0;g[r>>2]=-n;c[L>>2]=c[N>>2];c[L+4>>2]=c[N+4>>2];Io(M,L);n=+g[M>>2];o=+g[s>>2];h=l*n-m*o;f=m*n+l*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(O,l,m,n,o);h=+g[O>>2];f=+g[t>>2]}g[d+(k<<3)>>2]=h;g[d+(k<<3)+4>>2]=f;e=c[q>>2]|0;k=k+1|0}p=p+1|0}while(p>>>0>>0);i=P;return}function Ih(a){a=a|0;return +(+g[a+36>>2])}function Jh(a){a=a|0;return +(+g[a+40>>2])}function Kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,g=0,i=0,j=0;j=(b|0)==0;if(j)return;else i=0;do{g=c+(i<<3)|0;h[g>>3]=1.0;d=a+(i<<3)|0;e=1.0;f=0;do{if((i|0)!=(f|0)){e=e*(+h[d>>3]-+h[a+(f<<3)>>3]);h[g>>3]=e}f=f+1|0}while((f|0)!=(b|0));h[g>>3]=1.0/e;i=i+1|0}while((i|0)!=(b|0));e=+h[c>>3];if(j)return;h[c>>3]=e/e;if((b|0)==1)return;else d=1;do{h[c+(d<<3)>>3]=+h[c+(d<<3)>>3]/e;d=d+1|0}while((d|0)!=(b|0));return}function Lh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;a:do if(!e){i=0.0;g=0.0}else{f=0;i=0.0;g=0.0;while(1){j=d-+h[a+(f<<3)>>3];if(+N(+j)<9.999999974752427e-07)break;k=+h[c+(f<<3)>>3];i=i+k*+h[b+(f<<3)>>3]/j;g=g+k/j;f=f+1|0;if(f>>>0>=e>>>0)break a}k=+h[b+(f<<3)>>3];return +k}while(0);k=i/g;return +k}function Mh(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0,f=0.0;if(!b){f=0.0;return +f}else{e=0;f=1.0;d=0.0}while(1){d=d+f*+g[a+(e<<2)>>2];e=e+1|0;if((e|0)==(b|0))break;else f=f*c}return +d}function Nh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,h=0,k=0,l=0.0,m=0.0,n=0,o=0,p=0;p=i;n=_(e,c)|0;o=i;i=i+((1*(n<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!((c|0)==0|(e|0)==0)){k=0;do{f=_(k,e)|0;l=+g[a+(k<<2)>>2];h=0;m=1.0;while(1){g[o+(h+f<<2)>>2]=m;h=h+1|0;if((h|0)==(e|0))break;else m=m*l}k=k+1|0}while((k|0)!=(c|0))}f=i;i=i+((1*(n<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(f|0,o|0,n<<2|0)|0;Zh(f,c,e);k=i;i=i+((1*(e<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Wh(f,e,c,b,c,1,k,e,1);a=_(e,e)|0;h=i;i=i+((1*(a<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Wh(f,e,c,o,c,e,h,e,e);f=i;i=i+((1*(a<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(f|0,h|0,a<<2|0)|0;Xh(f,e,e);Wh(f,e,e,k,e,1,d,e,1);i=p;return}function Oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0;y=i;i=i+16|0;if((i|0)>=(j|0))ba();w=y+8|0;x=y;if(!b){g[c>>2]=0.0;g[c+4>>2]=0.0;i=y;return}else d=0;while(1){g[c+(d<<3)>>2]=+((d|0)==0&1);g[c+(d<<3)+4>>2]=0.0;if((d|0)==(b|0))break;else d=d+1|0}t=x+4|0;u=w+4|0;v=0;do{q=a+(v<<3)|0;r=a+(v<<3)+4|0;v=v+1|0;f=-+g[q>>2];e=-+g[r>>2];d=c+(v<<3)|0;A=+g[d>>2];n=c+(v<<3)+4|0;z=+g[n>>2];l=f;h=z;m=e;k=A;f=A*f;e=z*e;s=v;while(1){f=f-e;e=m*k+l*h;if((f!=f|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(w,l,m,k,h);f=+g[w>>2];e=+g[u>>2]}B=s;s=s+-1|0;o=c+(s<<3)|0;p=c+(s<<3)+4|0;l=e+ +g[p>>2];g[d>>2]=f+ +g[o>>2];g[n>>2]=l;l=-+g[q>>2];m=-+g[r>>2];k=+g[o>>2];h=+g[p>>2];f=k*l;e=h*m;if((B|0)<=1){n=o;d=p;break}else{d=o;n=p}}f=f-e;e=k*m+h*l;if((f!=f|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(x,k,h,l,m);f=+g[x>>2];e=+g[t>>2]}g[n>>2]=f;g[d>>2]=e}while((v|0)!=(b|0));i=y;return}function Ph(a){a=+a;return +((1.0-+qp(a*.7071067811865476))*.5)}function Qh(a){a=+a;var b=0.0;b=a*3.141592653589793;if(+N(+a)<.009999999776482582){a=+Q(+(b*.5))*+Q(+(b*.25))*+Q(+(b*.125));return +a}else{a=+R(+b)/b;return +a}return 0.0}function Rh(a){a=a|0;var b=0;if(!a){Qp(30906,58,1,c[2348]|0)|0;kb(1)}a=a+-1|0;if(!a){b=0;return b|0}else b=0;do{a=a>>>1;b=b+1|0}while((a|0)!=0);a=b;return a|0}function Sh(a){a=+a;var b=0.0,c=0,d=0.0;if(a==0.0){b=1.0;return +b}b=+Y(+(a*.5));c=0;a=0.0;do{d=+(c>>>0);a=a+ +X(+((d*b-+Th(d+1.0))*2.0));c=c+1|0}while((c|0)!=32);return +a}function Th(a){a=+a;if(a<0.0){Qp(30965,47,1,c[2348]|0)|0;kb(1)}if(a<10.0)return +(+Th(a+1.0)-+Y(+a));else return +((1.8378770351409912-+Y(+a))*.5+(+Y(+(1.0/(a*12.0-.10000000149011612/a)+a))+-1.0)*a);return 0.0}function Uh(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;if(a>>>0>b>>>0){Qp(31013,60,1,c[2348]|0)|0;kb(1)}if(d<0.0){Qp(31074,60,1,c[2348]|0)|0;kb(1)}if(e<-.5|e>.5){Qp(31135,64,1,c[2348]|0)|0;kb(1)}else{e=(+(a>>>0)-+((b+-1|0)>>>0)*.5+e)*2.0/+(b>>>0);e=+Sh(+O(+(1.0-e*e))*d);return +(e/+Sh(d))}return +(0.0)}function Vh(a,b){a=a|0;b=b|0;if(a>>>0>b>>>0){Qp(31200,61,1,c[2348]|0)|0;kb(1)}else return +(.53836-+Q(+(+(a>>>0)*6.283185307179586/+((b+-1|0)>>>0)))*.46164);return +(0.0)}function Wh(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0,n=0,o=0,p=0;if(!((d|0)==(f|0)&((j|0)==(b|0)&(k|0)==(h|0)))){Qp(31262,40,1,c[2348]|0)|0;kb(1)}if(!j)return;h=(d|0)==0;if(!k)return;f=k<<2;p=0;do{m=_(p,k)|0;n=_(p,d)|0;if(h)eq(i+(m<<2)|0,0,f|0)|0;else{o=0;do{b=0;l=0.0;do{l=l+ +g[a+(b+n<<2)>>2]*+g[e+((_(b,k)|0)+o<<2)>>2];b=b+1|0}while((b|0)!=(d|0));g[i+(o+m<<2)>>2]=l;o=o+1|0}while((o|0)!=(k|0))}p=p+1|0}while((p|0)!=(j|0));return}function Xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0;n=i;if((b|0)!=(d|0)){Qp(31303,40,1,c[2348]|0)|0;kb(1)}l=b<<1;k=(_(l,b)|0)<<2;m=i;i=i+((1*k|0)+15&-16)|0;if((i|0)>=(j|0))ba();e=(b|0)==0;if(e){Yh(m,b,l);i=n;return}f=b<<2;k=0;do{d=_(l,k)|0;fq(m+(d<<2)|0,a+((_(k,b)|0)<<2)|0,f|0)|0;d=d+b|0;h=0;do{g[m+(d+h<<2)>>2]=+((k|0)==(h|0)&1);h=h+1|0}while((h|0)!=(b|0));k=k+1|0}while((k|0)!=(b|0));Yh(m,b,l);if(e){i=n;return}d=b<<2;e=0;do{fq(a+((_(e,b)|0)<<2)|0,m+((_(l,e)|0)+b<<2)|0,d|0)|0;e=e+1|0}while((e|0)!=(b|0));i=n;return}function Yh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=(b|0)==0;if(o)return;p=c[2348]|0;q=(d|0)==0;r=(d|0)!=0;e=0;h=0;f=0.0;do{i=e;do{l=+N(+(+g[a+((_(i,d)|0)+e<<2)>>2]));n=(i|0)==(e|0)|l>f;f=n?l:f;h=n?i:h;i=i+1|0}while((i|0)!=(b|0));if(f==0.0)Qp(31344,63,1,p)|0;n=_(e,d)|0;if((e|0)!=(h|0)&r){i=_(h,d)|0;j=0;do{t=a+(j+n<<2)|0;s=c[t>>2]|0;m=a+(j+i<<2)|0;c[t>>2]=c[m>>2];c[m>>2]=s;j=j+1|0}while((j|0)!=(d|0))}k=+g[a+(n+e<<2)>>2];if(!(k==0.0)){if(!q){m=0;do{if((m|0)!=(e|0)){i=_(m,d)|0;l=+g[a+(i+e<<2)>>2]/k;j=0;do{t=a+(j+i<<2)|0;g[t>>2]=l*+g[a+(j+n<<2)>>2]-+g[t>>2];j=j+1|0}while((j|0)!=(d|0))}m=m+1|0}while((m|0)!=(b|0))}}else Qp(31408,42,1,p)|0;e=e+1|0}while((e|0)!=(b|0));if(o|(d|0)==0)return;else i=0;do{e=_(i,d)|0;f=1.0/+g[a+(e+i<<2)>>2];h=0;do{t=a+(h+e<<2)|0;g[t>>2]=f*+g[t>>2];h=h+1|0}while((h|0)!=(d|0));i=i+1|0}while((i|0)!=(b|0));return}function Zh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,k=0,l=0,m=0,n=0;m=i;i=i+48|0;if((i|0)>=(j|0))ba();f=m+32|0;k=m+16|0;l=m;_h(a,b,d);d=_(d,b)|0;if(!d){i=m;return}b=l+8|0;e=0;do{n=a+(e<<2)|0;h[l>>3]=+g[n>>2];h[b>>3]=0.0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];c[f+8>>2]=c[l+8>>2];c[f+12>>2]=c[l+12>>2];Jo(k,f);g[n>>2]=+h[k>>3];e=e+1|0}while((e|0)!=(d|0));i=m;return}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;k=i;e=_(d,b)|0;h=i;i=i+((1*(e<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(h|0,a|0,e<<2|0)|0;if((b|0)==0|(d|0)==0){i=k;return}else g=0;do{e=_(g,d)|0;f=0;do{c[a+((_(f,b)|0)+g<<2)>>2]=c[h+(f+e<<2)>>2];f=f+1|0}while((f|0)!=(d|0));g=g+1|0}while((g|0)!=(b|0));i=k;return}function $h(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;if(a>>>0<2){Qp(31451,59,1,c[2348]|0)|0;kb(1)}if(!b){Qp(31511,57,1,c[2348]|0)|0;kb(1)}if(d<=0.0|d>=1.0){Qp(31569,65,1,c[2348]|0)|0;kb(1)}else{e=Xp(32)|0;c[e>>2]=a;c[e+4>>2]=b;g[e+8>>2]=d;g[e+28>>2]=1.0/+(a>>>0);f=_(a<<1,b)|0|1;c[e+12>>2]=f;f=Xp(f<<2)|0;c[e+16>>2]=f;sf(a,b,d,0.0,f);b=le(11,a,b,d,0.0)|0;c[e+20>>2]=b;g[e+24>>2]=0.0;oe(b);return e|0}return 0}function ai(a){a=a|0;g[a+24>>2]=0.0;oe(c[a+20>>2]|0);return}function bi(a){a=a|0;me(c[a+20>>2]|0);Yp(c[a+16>>2]|0);Yp(a);return}function ci(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0,k=0,l=0.0;k=i;e=+g[a+28>>2];h=i;i=i+((1*(c[a>>2]<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();qe(c[a+20>>2]|0,(b|0)==0?-e:e,h);if(!(c[a>>2]|0)){i=k;return}b=a+24|0;f=0;do{l=+g[h+(f<<2)>>2]+ +g[b>>2];e=l;l=e>3.141592653589793?e+-6.283185307179586:l;e=l;l=e<-3.141592653589793?e+6.283185307179586:l;g[b>>2]=l;e=+R(+l);g[d+(f<<3)>>2]=+Q(+l)+e*0.0;g[d+(f<<3)+4>>2]=e;f=f+1|0}while(f>>>0<(c[a>>2]|0)>>>0);i=k;return}function di(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();b=n;do switch(a|0){case 1:{m=ei(1)|0;i=n;return m|0}case 2:{m=ei(2)|0;i=n;return m|0}case 3:{m=ei(3)|0;i=n;return m|0}case 4:{m=ei(4)|0;i=n;return m|0}case 5:{m=ei(5)|0;i=n;return m|0}case 6:{m=ei(6)|0;i=n;return m|0}case 7:{m=ei(7)|0;i=n;return m|0}case 8:{m=ei(8)|0;i=n;return m|0}case 9:{b=Xp(252)|0;c[b>>2]=9;c[b+76>>2]=0;c[b+80>>2]=0;c[b+4>>2]=1;c[b+8>>2]=2;m=b+236|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;g[b+108>>2]=1.5707963705062866;a=b+104|0;g[a>>2]=0.0;g[b+12>>2]=1.5707963705062866;g[b+100>>2]=1.5707963705062866;c[m>>2]=1;c[b+240>>2]=2;g[b+84>>2]=1.0;g[b+88>>2]=0.0;c[b+92>>2]=1065353216;g[b+96>>2]=0.0;if(!(Ti(9)|0)){m=b;i=n;return m|0}g[a>>2]=0.0;m=b;i=n;return m|0}case 10:{a=Xp(252)|0;c[a>>2]=10;c[a+76>>2]=0;c[a+80>>2]=0;b=a+4|0;c[b>>2]=2;d=a+8|0;c[d>>2]=4;e=a+236|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;f=a+100|0;h=a+108|0;g[h>>2]=.7853981852531433;k=a+104|0;g[k>>2]=0.0;l=a+12|0;g[l>>2]=.7853981852531433;g[a+16>>2]=1.5707963705062866;if((c[b>>2]|0)>>>0>2){m=2;do{g[l+(m<<2)>>2]=+g[h>>2]*+(1<>>0<(c[b>>2]|0)>>>0)}m=c[a>>2]|0;g[f>>2]=(1.0-1.0/+((c[d>>2]|0)>>>0))*3.141592653589793;c[e>>2]=1;c[a+240>>2]=2;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(m)|0)){m=a;i=n;return m|0}g[k>>2]=0.0;m=a;i=n;return m|0}case 11:{a=Xp(252)|0;c[a>>2]=11;c[a+76>>2]=0;c[a+80>>2]=0;b=a+4|0;c[b>>2]=3;d=a+8|0;c[d>>2]=8;e=a+236|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;f=a+100|0;h=a+108|0;g[h>>2]=.39269909262657166;k=a+104|0;g[k>>2]=0.0;l=a+12|0;g[l>>2]=.39269909262657166;g[a+16>>2]=.7853981852531433;if((c[b>>2]|0)>>>0>2){m=2;do{g[l+(m<<2)>>2]=+g[h>>2]*+(1<>>0<(c[b>>2]|0)>>>0)}m=c[a>>2]|0;g[f>>2]=(1.0-1.0/+((c[d>>2]|0)>>>0))*3.141592653589793;c[e>>2]=1;c[a+240>>2]=2;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(m)|0)){m=a;i=n;return m|0}g[k>>2]=0.0;m=a;i=n;return m|0}case 12:{d=Xp(252)|0;c[d>>2]=12;c[d+76>>2]=0;c[d+80>>2]=0;e=d+4|0;c[e>>2]=4;f=d+8|0;c[f>>2]=16;h=d+236|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;k=d+100|0;l=d+108|0;g[l>>2]=.19634954631328583;m=d+104|0;g[m>>2]=0.0;a=d+12|0;g[a>>2]=.19634954631328583;g[d+16>>2]=.39269909262657166;if((c[e>>2]|0)>>>0>2){b=2;do{g[a+(b<<2)>>2]=+g[l>>2]*+(1<>>0<(c[e>>2]|0)>>>0)}l=c[d>>2]|0;g[k>>2]=(1.0-1.0/+((c[f>>2]|0)>>>0))*3.141592653589793;c[h>>2]=1;c[d+240>>2]=2;g[d+84>>2]=1.0;g[d+88>>2]=0.0;c[d+92>>2]=1065353216;g[d+96>>2]=0.0;if(!(Ti(l)|0)){m=d;i=n;return m|0}g[m>>2]=0.0;m=d;i=n;return m|0}case 13:{a=Xp(252)|0;c[a>>2]=13;c[a+76>>2]=0;c[a+80>>2]=0;b=a+4|0;c[b>>2]=5;d=a+8|0;c[d>>2]=32;e=a+236|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;f=a+100|0;h=a+108|0;g[h>>2]=.09817477315664291;k=a+104|0;g[k>>2]=0.0;l=a+12|0;g[l>>2]=.09817477315664291;g[a+16>>2]=.19634954631328583;if((c[b>>2]|0)>>>0>2){m=2;do{g[l+(m<<2)>>2]=+g[h>>2]*+(1<>>0<(c[b>>2]|0)>>>0)}m=c[a>>2]|0;g[f>>2]=(1.0-1.0/+((c[d>>2]|0)>>>0))*3.141592653589793;c[e>>2]=1;c[a+240>>2]=2;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(m)|0)){m=a;i=n;return m|0}g[k>>2]=0.0;m=a;i=n;return m|0}case 14:{a=Xp(252)|0;c[a>>2]=14;c[a+76>>2]=0;c[a+80>>2]=0;b=a+4|0;c[b>>2]=6;d=a+8|0;c[d>>2]=64;e=a+236|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;f=a+100|0;h=a+108|0;g[h>>2]=.04908738657832146;k=a+104|0;g[k>>2]=0.0;l=a+12|0;g[l>>2]=.04908738657832146;g[a+16>>2]=.09817477315664291;if((c[b>>2]|0)>>>0>2){m=2;do{g[l+(m<<2)>>2]=+g[h>>2]*+(1<>>0<(c[b>>2]|0)>>>0)}m=c[a>>2]|0;g[f>>2]=(1.0-1.0/+((c[d>>2]|0)>>>0))*3.141592653589793;c[e>>2]=1;c[a+240>>2]=2;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(m)|0)){m=a;i=n;return m|0}g[k>>2]=0.0;m=a;i=n;return m|0}case 15:{a=Xp(252)|0;c[a>>2]=15;c[a+76>>2]=0;c[a+80>>2]=0;b=a+4|0;c[b>>2]=7;d=a+8|0;c[d>>2]=128;e=a+236|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;f=a+100|0;h=a+108|0;g[h>>2]=.02454369328916073;k=a+104|0;g[k>>2]=0.0;l=a+12|0;g[l>>2]=.02454369328916073;g[a+16>>2]=.04908738657832146;if((c[b>>2]|0)>>>0>2){m=2;do{g[l+(m<<2)>>2]=+g[h>>2]*+(1<>>0<(c[b>>2]|0)>>>0)}m=c[a>>2]|0;g[f>>2]=(1.0-1.0/+((c[d>>2]|0)>>>0))*3.141592653589793;c[e>>2]=1;c[a+240>>2]=2;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(m)|0)){m=a;i=n;return m|0}g[k>>2]=0.0;m=a;i=n;return m|0}case 16:{a=Xp(252)|0;c[a>>2]=16;c[a+76>>2]=0;c[a+80>>2]=0;b=a+4|0;c[b>>2]=8;d=a+8|0;c[d>>2]=256;e=a+236|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;f=a+100|0;h=a+108|0;g[h>>2]=.012271846644580364;k=a+104|0;g[k>>2]=0.0;l=a+12|0;g[l>>2]=.012271846644580364;g[a+16>>2]=.02454369328916073;if((c[b>>2]|0)>>>0>2){m=2;do{g[l+(m<<2)>>2]=+g[h>>2]*+(1<>>0<(c[b>>2]|0)>>>0)}m=c[a>>2]|0;g[f>>2]=(1.0-1.0/+((c[d>>2]|0)>>>0))*3.141592653589793;c[e>>2]=1;c[a+240>>2]=2;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(m)|0)){m=a;i=n;return m|0}g[k>>2]=0.0;m=a;i=n;return m|0}case 17:{a=Xp(252)|0;c[a+76>>2]=0;c[a+80>>2]=0;c[a+4>>2]=1;c[a+8>>2]=2;m=a+236|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;g[a+100>>2]=1.0;c[a>>2]=17;g[a+12>>2]=1.0;c[m>>2]=3;c[a+240>>2]=4;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(17)|0)){m=a;i=n;return m|0}g[a+104>>2]=0.0;m=a;i=n;return m|0}case 18:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=2;c[h+8>>2]=4;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.4472135901451111;c[h>>2]=18;f=h+12|0;g[f>>2]=.4472135901451111;g[h+16>>2]=.8944271802902222;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 19:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=3;c[h+8>>2]=8;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.2182178944349289;c[h>>2]=19;f=h+12|0;g[f>>2]=.2182178944349289;g[h+16>>2]=.4364357888698578;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 20:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=4;c[h+8>>2]=16;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.10846523195505142;c[h>>2]=20;f=h+12|0;g[f>>2]=.10846523195505142;g[h+16>>2]=.21693046391010284;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 21:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=5;c[h+8>>2]=32;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.05415303632616997;c[h>>2]=21;f=h+12|0;g[f>>2]=.05415303632616997;g[h+16>>2]=.10830607265233994;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 22:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=6;c[h+8>>2]=64;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.02706659771502018;c[h>>2]=22;f=h+12|0;g[f>>2]=.02706659771502018;g[h+16>>2]=.05413319543004036;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 23:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=7;c[h+8>>2]=128;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.013532060198485851;c[h>>2]=23;f=h+12|0;g[f>>2]=.013532060198485851;g[h+16>>2]=.027064120396971703;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 24:{h=Xp(252)|0;c[h+76>>2]=0;c[h+80>>2]=0;d=h+4|0;c[d>>2]=8;c[h+8>>2]=256;k=h+236|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=h+100|0;g[e>>2]=.006765875034034252;c[h>>2]=24;f=h+12|0;g[f>>2]=.006765875034034252;g[h+16>>2]=.013531750068068504;a=c[d>>2]|0;if(a>>>0>2){b=2;do{g[f+(b<<2)>>2]=+g[e>>2]*+(1<>2]|0}while(b>>>0>>0)}c[k>>2]=3;c[h+240>>2]=4;if((a+-2|0)>>>0<6)ii(h,2);g[h+84>>2]=1.0;g[h+88>>2]=0.0;c[h+92>>2]=1065353216;g[h+96>>2]=0.0;if(!(Ti(c[h>>2]|0)|0)){m=h;i=n;return m|0}g[h+104>>2]=0.0;m=h;i=n;return m|0}case 25:{m=ni(2)|0;i=n;return m|0}case 26:{m=ni(3)|0;i=n;return m|0}case 27:{m=ni(4)|0;i=n;return m|0}case 28:{m=ni(5)|0;i=n;return m|0}case 29:{m=ni(6)|0;i=n;return m|0}case 30:{m=ni(7)|0;i=n;return m|0}case 31:{m=ni(8)|0;i=n;return m|0}case 32:{m=ni(9)|0;i=n;return m|0}case 33:{m=ni(10)|0;i=n;return m|0}case 34:{m=ni(11)|0;i=n;return m|0}case 35:{m=ni(12)|0;i=n;return m|0}case 36:{m=ni(13)|0;i=n;return m|0}case 37:{m=ni(14)|0;i=n;return m|0}case 38:{m=ni(15)|0;i=n;return m|0}case 39:{m=ni(16)|0;i=n;return m|0}case 40:{m=qi(2)|0;i=n;return m|0}case 41:{m=qi(3)|0;i=n;return m|0}case 42:{m=qi(4)|0;i=n;return m|0}case 43:{m=qi(5)|0;i=n;return m|0}case 44:{m=qi(6)|0;i=n;return m|0}case 45:{m=qi(7)|0;i=n;return m|0}case 46:{m=qi(8)|0;i=n;return m|0}case 47:{a=Xp(252)|0;c[a>>2]=47;c[a+76>>2]=0;c[a+80>>2]=0;c[a+4>>2]=1;c[a+8>>2]=2;m=a+236|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=5;c[a+240>>2]=6;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(47)|0)){m=a;i=n;return m|0}g[a+104>>2]=0.0;m=a;i=n;return m|0}case 48:{a=Xp(252)|0;c[a>>2]=48;c[a+76>>2]=0;c[a+80>>2]=0;c[a+4>>2]=2;c[a+8>>2]=4;m=a+236|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=7;c[a+240>>2]=8;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(48)|0)){m=a;i=n;return m|0}g[a+104>>2]=0.0;m=a;i=n;return m|0}case 49:{a=Xp(252)|0;c[a>>2]=49;c[a+76>>2]=0;c[a+80>>2]=0;c[a+4>>2]=1;c[a+8>>2]=2;m=a+236|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m>>2]=9;c[a+240>>2]=10;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(49)|0)){m=a;i=n;return m|0}g[a+104>>2]=0.0;m=a;i=n;return m|0}case 50:{a=Xp(252)|0;c[a>>2]=50;c[a+76>>2]=0;c[a+80>>2]=0;c[a+4>>2]=5;c[a+8>>2]=32;b=a+236|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;d=Xp(64)|0;c[a+100>>2]=d;e=2080;f=d+64|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));c[b>>2]=11;c[a+240>>2]=12;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(50)|0)){m=a;i=n;return m|0}g[a+104>>2]=0.0;m=a;i=n;return m|0}case 51:{a=Xp(252)|0;c[a>>2]=51;c[a+76>>2]=0;c[a+80>>2]=0;c[a+4>>2]=7;c[a+8>>2]=128;m=a+236|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;l=Xp(256)|0;c[a+100>>2]=l;fq(l|0,2144,256)|0;c[m>>2]=13;c[a+240>>2]=14;g[a+84>>2]=1.0;g[a+88>>2]=0.0;c[a+92>>2]=1065353216;g[a+96>>2]=0.0;if(!(Ti(51)|0)){m=a;i=n;return m|0}g[a+104>>2]=0.0;m=a;i=n;return m|0}case 52:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=4;c[m+8>>2]=16;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(16,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,2400,16);i=n;return m|0}case 53:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=4;c[m+8>>2]=16;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(16,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,3552,16);i=n;return m|0}case 54:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=5;c[m+8>>2]=32;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(32,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,3680,32);i=n;return m|0}case 55:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=6;c[m+8>>2]=64;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(64,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,3936,64);i=n;return m|0}case 56:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=7;c[m+8>>2]=128;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(128,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,4448,128);i=n;return m|0}case 57:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=8;c[m+8>>2]=256;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(256,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,5472,256);i=n;return m|0}case 58:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=6;c[m+8>>2]=64;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(64,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,2528,64);i=n;return m|0}case 59:{m=Xp(252)|0;c[m>>2]=60;c[m+80>>2]=0;c[m+4>>2]=6;c[m+8>>2]=64;l=m+236|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[m+76>>2]=Zp(64,8)|0;c[l>>2]=15;c[m+240>>2]=16;Fi(m,3040,64);i=n;return m|0}case 60:{Qp(32779,105,1,c[2348]|0)|0;kb(1);break}default:{n=c[2348]|0;c[b>>2]=a;Kp(n,32885,b)|0;kb(1)}}while(0);return 0}function ei(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0;i=Xp(252)|0;switch(a|0){case 1:{c[i>>2]=1;break}case 2:{c[i>>2]=2;break}case 3:{c[i>>2]=3;break}case 4:{c[i>>2]=4;break}case 5:{c[i>>2]=5;break}case 6:{c[i>>2]=6;break}case 7:{c[i>>2]=7;break}case 8:{c[i>>2]=8;break}default:{Qp(31635,57,1,c[2348]|0)|0;kb(1)}}j=i+76|0;c[j>>2]=0;k=i+80|0;c[k>>2]=0;l=i+4|0;c[l>>2]=a;a=1<>2]=a;h=i+236|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;m=3.141592653589793/+(a>>>0);a=i+100|0;b=i+104|0;g[b>>2]=m;d=i+12|0;g[d>>2]=m;if((c[l>>2]|0)>>>0>1){e=1;do{g[d+(e<<2)>>2]=+(1<>2];e=e+1|0}while(e>>>0<(c[l>>2]|0)>>>0)}f=c[f>>2]|0;g[a>>2]=(1.0-1.0/+(f>>>0))*3.141592653589793;c[h>>2]=17;c[i+240>>2]=18;c[j>>2]=Xp(f<<3)|0;hi(i);c[k>>2]=1;if((c[l>>2]|0)>>>0>2)ii(i,2);g[i+84>>2]=1.0;g[i+88>>2]=0.0;c[i+92>>2]=1065353216;g[i+96>>2]=0.0;if(!(Ti(c[i>>2]|0)|0))return i|0;g[b>>2]=0.0;return i|0}function fi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+((Wi(b)|0)<<1>>>0);e=+g[a+104>>2]*e;d=+R(+e);g[c>>2]=+Q(+e)+d*0.0;g[c+4>>2]=d;return}function gi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();m=q+8|0;n=q;p=c[b>>2]|0;o=c[b+4>>2]|0;c[n>>2]=p;c[n+4>>2]=o;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];e=+Bo(m);e=e-+g[a+100>>2];f=e;m=c[a+4>>2]|0;if(!m)b=0;else{n=m+-1|0;e=f<-3.141592653589793?f+6.283185307179586:e;k=0;l=0;b=0;while(1){b=b<<1;if(e>0.0){e=e-+g[a+12+(k+n<<2)>>2];b=b|1}else e=e+ +g[a+12+(k+n<<2)>>2];h=l+1|0;if((h|0)==(m|0))break;else{k=~l;l=h}}}n=Vi(b)|0;c[d>>2]=n;e=+((Wi(n)|0)<<1>>>0);e=+g[a+104>>2]*e;f=+R(+e);g[a+92>>2]=+Q(+e)+f*0.0;g[a+96>>2]=f;c[a+84>>2]=p;c[a+88>>2]=o;i=q;return}function hi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=a+76|0;b=c[f>>2]|0;if(!b){Qp(31693,65,1,c[2348]|0)|0;kb(1)}g=a+8|0;e=c[g>>2]|0;if((e+-1|0)>>>0>65535){Qp(31759,60,1,c[2348]|0)|0;kb(1)}h=a+236|0;d=c[h>>2]|0;if(!d){Qp(31820,70,1,c[2348]|0)|0;kb(1)}if(!e)return;tb[d&31](a,0,b);if((c[g>>2]|0)>>>0>1)b=1;else return;do{tb[c[h>>2]&31](a,b,(c[f>>2]|0)+(b<<3)|0);b=b+1|0}while(b>>>0<(c[g>>2]|0)>>>0);return}function ii(b,e){b=b|0;e=e|0;var f=0,h=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+16|0;if((i|0)>=(j|0))ba();v=A+8|0;w=A;h=b+8|0;y=c[h>>2]|0;if((y+-1|0)>>>0>>0){Qp(31891,63,1,c[2348]|0)|0;kb(1)}c[b+248>>2]=e;z=b+244|0;c[z>>2]=Xp(_(y,e)|0)|0;x=i;i=i+((1*(y<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();q=(y|0)==0;if(q){i=A;return}k=b+80|0;l=b+236|0;m=b+76|0;if(!y){u=c[2348]|0;Qp(31955,65,1,u)|0;kb(1)}else{n=x;f=0}while(1){if(!(c[k>>2]|0))tb[c[l>>2]&31](b,f,n);else{t=c[m>>2]|0;u=c[t+(f<<3)+4>>2]|0;c[n>>2]=c[t+(f<<3)>>2];c[x+(f<<3)+4>>2]=u}f=f+1|0;if(f>>>0>=y>>>0)break;if((c[h>>2]|0)>>>0>f>>>0)n=x+(f<<3)|0;else{p=10;break}}if((p|0)==10){u=c[2348]|0;Qp(31955,65,1,u)|0;kb(1)}if(q){i=A;return}f=y&255;if(e|0){k=0;do{h=_(k,e)|0;l=0;do{a[(c[z>>2]|0)+(l+h)>>0]=f;l=l+1|0}while((l|0)!=(e|0));k=k+1|0}while((k|0)!=(y|0));if(q){i=A;return}}l=(e|0)==0;m=w+4|0;s=0;do{if(!l){n=x+(s<<3)|0;b=x+(s<<3)+4|0;p=_(s,e)|0;u=0;do{q=u+p|0;r=1.0e9;t=0;while(1){h=c[z>>2]|0;k=0;f=(s|0)!=(t|0)&1;do{f=(d[h+(k+p)>>0]|0|0)==(t|0)?0:f;k=k+1|0}while((k|0)!=(e|0));o=+g[b>>2]-+g[x+(t<<3)+4>>2];g[w>>2]=+g[n>>2]-+g[x+(t<<3)>>2];g[m>>2]=o;c[v>>2]=c[w>>2];c[v+4>>2]=c[w+4>>2];o=+wo(v);if((f|0)!=0&o>2]|0)+q>>0]=t;else o=r;t=t+1|0;if((t|0)==(y|0))break;else r=o}u=u+1|0}while((u|0)!=(e|0))}s=s+1|0}while((s|0)!=(y|0));i=A;return}function ji(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+((Wi(b)|0)<<1>>>0);b=a+104|0;e=+g[b>>2]+ +g[a+108>>2]*e;e=e-(e>6.283185307179586?6.283185307179586:0.0);g[b>>2]=e;d=+R(+e);e=+Q(+e)+d*0.0;g[c>>2]=e;g[c+4>>2]=d;g[a+84>>2]=e;g[a+88>>2]=d;return}function ki(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0;r=i;i=i+32|0;if((i|0)>=(j|0))ba();n=r+16|0;l=r+8|0;m=r;q=c[b>>2]|0;o=c[b+4>>2]|0;c[l>>2]=q;c[l+4>>2]=o;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];p=+Bo(n);c[m>>2]=q;c[m+4>>2]=o;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];e=+Bo(n);n=a+104|0;e=e-+g[n>>2];g[n>>2]=p;e=e-+g[a+100>>2];f=e;if(!(f>3.141592653589793)){if(f<-3.141592653589793)e=f+6.283185307179586}else e=f+-6.283185307179586;m=c[a+4>>2]|0;if(!m)b=0;else{n=m+-1|0;k=0;l=0;b=0;while(1){b=b<<1;if(e>0.0){e=e-+g[a+12+(k+n<<2)>>2];b=b|1}else e=e+ +g[a+12+(k+n<<2)>>2];h=l+1|0;if((h|0)==(m|0))break;else{k=~l;l=h}}}c[d>>2]=Vi(b)|0;f=p-e;p=+R(+f);g[a+92>>2]=+Q(+f)+p*0.0;g[a+96>>2]=p;c[a+84>>2]=q;c[a+88>>2]=o;i=r;return}function li(a,b,d){a=a|0;b=b|0;d=d|0;b=(Wi(b)|0)<<1;g[d>>2]=+g[a+100>>2]*+(1-(c[a+8>>2]|0)+b|0);g[d+4>>2]=0.0;return}function mi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0,j=0,l=0,m=0,n=0;l=c[a+4>>2]|0;if(!l){f=c[b>>2]|0;e=0}else{h=+g[b>>2];m=l+-1|0;f=(g[k>>2]=h,c[k>>2]|0);j=0;n=0;e=0;while(1){e=e<<1;if(h>0.0){h=h-+g[a+12+(j+m<<2)>>2];e=e|1}else h=h+ +g[a+12+(j+m<<2)>>2];i=n+1|0;if((i|0)==(l|0))break;else{j=~n;n=i}}}n=Vi(e)|0;c[d>>2]=n;d=(Wi(n)|0)<<1;g[a+92>>2]=+g[a+100>>2]*+(1-(c[a+8>>2]|0)+d|0);g[a+96>>2]=0.0;b=c[b+4>>2]|0;c[a+84>>2]=f;c[a+88>>2]=b;return}function ni(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!a){Qp(32021,66,1,c[2348]|0)|0;kb(1)}o=Xp(252)|0;if(a>>>0>16){Qp(32088,64,1,c[2348]|0)|0;kb(1)}j=o+76|0;c[j>>2]=0;k=o+80|0;c[k>>2]=0;l=o+4|0;c[l>>2]=a;f=1<>2]=f;i=o+236|0;c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;if(!(a&1)){e=a>>>1;c[o+100>>2]=e;n=o+104|0;c[n>>2]=e;d=e}else{d=(a+1|0)>>>1;c[o+100>>2]=d;e=(a+-1|0)>>>1;n=o+104|0;c[n>>2]=e}b=1<>2]=b;c[o+112>>2]=1<=512){if((f|0)<8192)switch(f|0){case 512:{g[o+116>>2]=.048450157046318054;c[o>>2]=32;h=.048450157046318054;break a}case 1024:{g[o+116>>2]=.03829197958111763;c[o>>2]=33;h=.03829197958111763;break a}case 2048:{g[o+116>>2]=.02421087585389614;c[o>>2]=34;h=.02421087585389614;break a}case 4096:{g[o+116>>2]=.01913897506892681;c[o>>2]=35;h=.01913897506892681;break a}default:{a=c[2348]|0;Qp(32280,58,1,a)|0;kb(1)}}if((f|0)<32768)if((f|0)<16384)switch(f|0){case 8192:{g[o+116>>2]=.012103663757443428;c[o>>2]=36;h=.012103663757443428;break a}default:{a=c[2348]|0;Qp(32280,58,1,a)|0;kb(1)}}else switch(f|0){case 16384:{g[o+116>>2]=.009568611159920692;c[o>>2]=37;h=.009568611159920692;break a}default:{a=c[2348]|0;Qp(32280,58,1,a)|0;kb(1)}}else if((f|0)<65536)switch(f|0){case 32768:{g[o+116>>2]=6.0516102239489555e-03;c[o>>2]=38;h=6.0516102239489555e-03;break a}default:{a=c[2348]|0;Qp(32280,58,1,a)|0;kb(1)}}else switch(f|0){case 65536:{g[o+116>>2]=.004784196149557829;c[o>>2]=39;h=.004784196149557829;break a}default:{a=c[2348]|0;Qp(32280,58,1,a)|0;kb(1)}}}else switch(f|0){case 4:{g[o+116>>2]=.7071067690849304;c[o>>2]=25;h=.7071067690849304;break a}case 8:{g[o+116>>2]=.40824830532073975;c[o>>2]=26;h=.40824830532073975;break a}case 16:{g[o+116>>2]=.3162277638912201;c[o>>2]=27;h=.3162277638912201;break a}case 32:{g[o+116>>2]=.1961161345243454;c[o>>2]=28;h=.1961161345243454;break a}case 64:{g[o+116>>2]=.15430335700511932;c[o>>2]=29;h=.15430335700511932;break a}case 128:{g[o+116>>2]=.09712858498096466;c[o>>2]=30;h=.09712858498096466;break a}case 256:{g[o+116>>2]=.0766965001821518;c[o>>2]=31;h=.0766965001821518;break a}default:{a=c[2348]|0;Qp(32280,58,1,a)|0;kb(1)}}while(0);d=o+116|0;e=o+12|0;g[e>>2]=h;if((c[l>>2]|0)>>>0>1){b=1;do{g[e+(b<<2)>>2]=+(1<>2];b=b+1|0}while(b>>>0<(c[l>>2]|0)>>>0)}b=c[m>>2]|0;c[i>>2]=19;c[o+240>>2]=20;c[j>>2]=Xp(b<<3)|0;hi(o);c[k>>2]=1;b=c[l>>2]|0;if((b|0)!=3){if(b>>>0>3)ii(o,4)}else ii(o,3);g[o+84>>2]=1.0;g[o+88>>2]=0.0;c[o+92>>2]=1065353216;g[o+96>>2]=0.0;if(!(Ti(c[o>>2]|0)|0))return o|0;g[n>>2]=0.0;return o|0}function oi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0.0,i=0;i=c[a+104>>2]|0;f=Wi(b>>>i)|0;b=Wi((1<>2];e=h*+((b<<1|1)-(c[a+112>>2]|0)|0);g[d>>2]=h*+((f<<1|1)-(c[a+108>>2]|0)|0)+e*0.0;g[d+4>>2]=e;return}function pi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0;p=+g[b>>2];j=c[a+100>>2]|0;if(!j){o=p;n=0}else{k=j+-1|0;f=p;i=0;l=0;e=0;while(1){e=e<<1;if(f>0.0){f=f-+g[a+12+(i+k<<2)>>2];e=e|1}else f=f+ +g[a+12+(i+k<<2)>>2];h=l+1|0;if((h|0)==(j|0)){o=f;n=e;break}else{i=~l;l=h}}}m=+g[b+4>>2];b=a+104|0;j=c[b>>2]|0;if(!j){f=m;e=0}else{k=j+-1|0;f=m;i=0;l=0;e=0;while(1){e=e<<1;if(f>0.0){f=f-+g[a+12+(i+k<<2)>>2];e=e|1}else f=f+ +g[a+12+(i+k<<2)>>2];h=l+1|0;if((h|0)==(j|0))break;else{i=~l;l=h}}}l=Vi(n)|0;n=Vi(e)|0;c[d>>2]=(l<>2])+n;g[a+92>>2]=p-(o+f*0.0);g[a+96>>2]=m-f;g[a+84>>2]=p;g[a+88>>2]=m;return}function qi(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+16|0;if((i|0)>=(j|0))ba();b=v;switch(a|0){case 2:{u=1632;break}case 3:{u=1680;break}case 4:{u=1728;break}case 5:{u=1788;break}case 6:{u=1860;break}case 7:{u=1944;break}case 8:{u=2052;break}default:{t=c[2348]|0;c[b>>2]=a;Kp(t,32339,b)|0;kb(1)}}p=Xp(252)|0;c[p>>2]=c[u>>2];q=p+76|0;c[q>>2]=0;r=p+80|0;c[r>>2]=0;s=p+4|0;c[s>>2]=a;t=p+8|0;c[t>>2]=1<>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;l=c[u+4>>2]|0;n=p+100|0;c[n>>2]=l;if(l){a=c[u+8>>2]|0;d=p+104|0;e=c[u+12>>2]|0;f=p+136|0;h=c[u+16>>2]|0;k=p+200|0;l=0;do{c[d+(l<<2)>>2]=c[a+(l<<2)>>2];c[f+(l<<2)>>2]=c[e+(l<<2)>>2];c[k+(l<<2)>>2]=c[h+(l<<2)>>2];l=l+1|0;b=c[n>>2]|0}while(l>>>0>>0);if((b|0)!=1)m=12}else m=12;if((m|0)==12){b=c[u+20>>2]|0;a=p+168|0;d=0;do{c[a+(d<<2)>>2]=c[b+(d<<2)>>2];d=d+1|0}while(d>>>0<((c[n>>2]|0)+-1|0)>>>0)}n=c[t>>2]|0;m=Xp(n)|0;c[p+232>>2]=m;gq(m|0,c[u+24>>2]|0,n|0)|0;c[o>>2]=21;c[p+240>>2]=22;switch(c[s>>2]|0){case 2:{ii(p,3);break}case 3:{ii(p,3);break}case 4:{ii(p,4);break}case 5:{ii(p,4);break}case 6:{ii(p,4);break}case 7:{ii(p,5);break}case 8:{ii(p,5);break}default:{}}c[q>>2]=Xp(c[t>>2]<<3)|0;hi(p);c[r>>2]=1;g[p+84>>2]=1.0;g[p+88>>2]=0.0;c[p+92>>2]=1065353216;g[p+96>>2]=0.0;if(!(Ti(c[p>>2]|0)|0)){i=v;return p|0}g[p+104>>2]=0.0;i=v;return p|0}function ri(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0;if((c[a+8>>2]|0)>>>0<=b>>>0){Qp(32402,59,1,c[2348]|0)|0;return}j=d[(c[a+232>>2]|0)+b>>0]|0;f=c[a+100>>2]|0;a:do if(!f){h=0;b=0}else{h=0;i=0;while(1){b=(c[a+104+(h<<2)>>2]|0)+i|0;if(j>>>0>>0){b=i;break a}h=h+1|0;if(h>>>0>=f>>>0){h=0;break}else i=b}}while(0);l=+g[a+136+(h<<2)>>2];m=+g[a+200+(h<<2)>>2]+ +((j-b|0)>>>0)*2.0*3.141592653589793/+((c[a+104+(h<<2)>>2]|0)>>>0);k=+R(+m);g[e>>2]=l*(+Q(+m)+k*0.0);g[e+4>>2]=l*k;return}function si(a,b,e){a=a|0;b=b|0;e=e|0;var f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+32|0;if((i|0)>=(j|0))ba();k=p+16|0;m=p+8|0;l=p;o=c[b>>2]|0;n=c[b+4>>2]|0;c[m>>2]=o;c[m+4>>2]=n;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];f=+wo(k);b=(c[a+100>>2]|0)+-1|0;a:do if(!b)h=0;else{h=0;while(1){if(f<+g[a+168+(h<<2)>>2])break a;h=h+1|0;if(h>>>0>=b>>>0){h=b;break}}}while(0);c[l>>2]=o;c[l+4>>2]=n;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];f=+Bo(k);if(f<0.0)f=f+6.283185307179586;b=c[a+104+(h<<2)>>2]|0;b=(~~+dq(+((f-+g[a+200+(h<<2)>>2])/(6.283185307179586/+(b>>>0))))>>>0>>>0)%(b>>>0)|0;if(h){k=0;do{b=(c[a+104+(k<<2)>>2]|0)+b|0;k=k+1|0}while((k|0)!=(h|0))}m=a+8|0;k=c[m>>2]|0;b:do if(!k)h=0;else{l=c[a+232>>2]|0;h=0;while(1){if((d[l+h>>0]|0|0)==(b|0))break b;h=h+1|0;if(h>>>0>=k>>>0){h=0;break}}}while(0);c[e>>2]=h;b=a+92|0;if((c[m>>2]|0)>>>0<=h>>>0){Qp(31955,65,1,c[2348]|0)|0;kb(1)}if(!(c[a+80>>2]|0)){tb[c[a+236>>2]&31](a,h,b);e=a+84|0;a=a+88|0;c[e>>2]=o;c[a>>2]=n;i=p;return}else{m=c[a+76>>2]|0;e=c[m+(h<<3)+4>>2]|0;c[b>>2]=c[m+(h<<3)>>2];c[a+96>>2]=e;e=a+84|0;a=a+88|0;c[e>>2]=o;c[a>>2]=n;i=p;return}}function ti(a,b,c){a=a|0;b=b|0;c=c|0;g[c>>2]=b|0?-1.0:1.0;g[c+4>>2]=0.0;return}function ui(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0;e=+g[b>>2];f=!(e>0.0);c[d>>2]=f&1;g[a+92>>2]=f?-1.0:1.0;g[a+96>>2]=0.0;b=c[b+4>>2]|0;g[a+84>>2]=e;c[a+88>>2]=b;return}function vi(a,b,c){a=a|0;b=b|0;c=c|0;a=(b&2|0)!=0;g[c>>2]=(b&1|0?-.7071067811865476:.7071067811865476)+(a?-0.0:0.0);g[c+4>>2]=a?-.7071067690849304:.7071067690849304;return}function wi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0;f=+g[b>>2];h=!(f>0.0);e=+g[b+4>>2];b=e>0.0;c[d>>2]=(b?0:2)|h&1;g[a+92>>2]=(h?-.7071067811865476:.7071067811865476)+(b?0.0:-0.0);g[a+96>>2]=b?.7071067690849304:-.7071067690849304;g[a+84>>2]=f;g[a+88>>2]=e;return}function xi(a,b,c){a=a|0;b=b|0;c=c|0;g[c>>2]=b|0?0.0:1.4142135381698608;g[c+4>>2]=0.0;return}function yi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0;e=+g[b>>2];f=!(e>.7071067811865476);c[d>>2]=f&1;g[a+92>>2]=f?0.0:1.4142135381698608;g[a+96>>2]=0.0;b=c[b+4>>2]|0;g[a+84>>2]=e;c[a+88>>2]=b;return}function zi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;if((i|0)>=(j|0))ba();h=o+32|0;k=o+24|0;l=o+16|0;m=o+8|0;n=o;p=b&7;a=c[a+100>>2]|0;e=+g[a+(p<<3)>>2];f=+g[a+(p<<3)+4>>2];switch(b>>>3&3|0){case 0:{g[d>>2]=e;g[d+4>>2]=f;i=o;return}case 1:{g[l>>2]=e;g[l+4>>2]=f;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];Ko(k,h);p=c[k+4>>2]|0;c[d>>2]=c[k>>2];c[d+4>>2]=p;i=o;return}case 2:{g[n>>2]=e;g[n+4>>2]=f;c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];Ko(m,h);f=-+g[m+4>>2];g[d>>2]=-+g[m>>2];g[d+4>>2]=f;i=o;return}case 3:{g[d>>2]=-e;g[d+4>>2]=-f;i=o;return}default:{}}}function Ai(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;y=i;i=i+80|0;if((i|0)>=(j|0))ba();s=y+72|0;t=y+24|0;u=y+16|0;v=y+8|0;w=y;h=y+64|0;k=y+56|0;l=y+48|0;m=y+40|0;o=y+32|0;x=+g[b>>2];r=+g[b+4>>2];n=(x<0.0&1)<<1|r<0.0;switch(n|0){case 0:{p=x;q=r;break}case 1:{g[k>>2]=x;g[k+4>>2]=r;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];Ko(h,s);p=+g[h>>2];q=+g[h+4>>2];break}case 2:{g[m>>2]=x;g[m+4>>2]=r;c[s>>2]=c[m>>2];c[s+4>>2]=c[m+4>>2];Ko(l,s);p=-+g[l>>2];q=-+g[l+4>>2];break}case 3:{p=-x;q=-r;break}default:{}}if(!(p>=0.0))Ha(32462,32486,98,32515);if(!(q>=0.0))Ha(32539,32486,99,32515);k=a+100|0;b=o+4|0;m=c[k>>2]|0;e=q-+g[m+4>>2];g[o>>2]=p-+g[m>>2];g[b>>2]=e;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];e=+wo(s);c[d>>2]=0;m=c[k>>2]|0;f=q-+g[m+12>>2];g[o>>2]=p-+g[m+8>>2];g[b>>2]=f;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];f=+wo(s);if(f>2]=1;e=f}m=c[k>>2]|0;f=q-+g[m+20>>2];g[o>>2]=p-+g[m+16>>2];g[b>>2]=f;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];f=+wo(s);if(f>2]=2;e=f}m=c[k>>2]|0;f=q-+g[m+28>>2];g[o>>2]=p-+g[m+24>>2];g[b>>2]=f;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];f=+wo(s);if(f>2]=3;e=f}m=c[k>>2]|0;f=q-+g[m+36>>2];g[o>>2]=p-+g[m+32>>2];g[b>>2]=f;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];f=+wo(s);if(f>2]=4;else f=e;m=c[k>>2]|0;e=q-+g[m+44>>2];g[o>>2]=p-+g[m+40>>2];g[b>>2]=e;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];e=+wo(s);if(e>2]=5;f=e}m=c[k>>2]|0;e=q-+g[m+52>>2];g[o>>2]=p-+g[m+48>>2];g[b>>2]=e;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];e=+wo(s);if(e>2]=6;else e=f;m=c[k>>2]|0;q=q-+g[m+60>>2];g[o>>2]=p-+g[m+56>>2];g[b>>2]=q;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];if(+wo(s)>2]=7;b=7}else b=c[d>>2]|0;o=b|n<<3;c[d>>2]=o;h=a+92|0;d=b&7;n=c[k>>2]|0;e=+g[n+(d<<3)>>2];f=+g[n+(d<<3)+4>>2];switch(o>>>3&3|0){case 0:{g[h>>2]=e;g[a+96>>2]=f;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}case 1:{g[u>>2]=e;g[u+4>>2]=f;c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];Ko(t,s);w=c[t+4>>2]|0;c[h>>2]=c[t>>2];c[a+96>>2]=w;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}case 2:{g[w>>2]=e;g[w+4>>2]=f;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];Ko(v,s);q=-+g[v+4>>2];g[h>>2]=-+g[v>>2];g[a+96>>2]=q;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}case 3:{g[h>>2]=-e;g[a+96>>2]=-f;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}default:{}}}function Bi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;if((i|0)>=(j|0))ba();h=o+32|0;k=o+24|0;l=o+16|0;m=o+8|0;n=o;p=b&31;a=c[a+100>>2]|0;e=+g[a+(p<<3)>>2];f=+g[a+(p<<3)+4>>2];switch(b>>>5&3|0){case 0:{g[d>>2]=e;g[d+4>>2]=f;i=o;return}case 1:{g[l>>2]=e;g[l+4>>2]=f;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];Ko(k,h);p=c[k+4>>2]|0;c[d>>2]=c[k>>2];c[d+4>>2]=p;i=o;return}case 2:{g[n>>2]=e;g[n+4>>2]=f;c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];Ko(m,h);f=-+g[m+4>>2];g[d>>2]=-+g[m>>2];g[d+4>>2]=f;i=o;return}case 3:{g[d>>2]=-e;g[d+4>>2]=-f;i=o;return}default:{}}}function Ci(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0;y=i;i=i+80|0;if((i|0)>=(j|0))ba();s=y+72|0;t=y+64|0;u=y+40|0;v=y+24|0;w=y+16|0;h=y+56|0;k=y+48|0;l=y+32|0;m=y+8|0;o=y;x=+g[b>>2];r=+g[b+4>>2];n=(x<0.0&1)<<1|r<0.0;switch(n|0){case 0:{p=x;q=r;break}case 1:{g[k>>2]=x;g[k+4>>2]=r;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];Ko(h,s);p=+g[h>>2];q=+g[h+4>>2];break}case 2:{g[m>>2]=x;g[m+4>>2]=r;c[s>>2]=c[m>>2];c[s+4>>2]=c[m+4>>2];Ko(l,s);p=-+g[l>>2];q=-+g[l+4>>2];break}case 3:{p=-x;q=-r;break}default:{}}if(!(p>=0.0))Ha(32462,32563,99,32593);if(!(q>=0.0))Ha(32539,32563,100,32593);k=a+100|0;b=o+4|0;f=0.0;h=0;while(1){m=c[k>>2]|0;e=q-+g[m+(h<<3)+4>>2];g[o>>2]=p-+g[m+(h<<3)>>2];g[b>>2]=e;c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];e=+wo(s);if((h|0)==0|e>2]=h;else e=f;h=h+1|0;if((h|0)==32)break;else f=e}m=c[d>>2]|0;o=m|n<<5;c[d>>2]=o;b=a+92|0;d=m&31;n=c[k>>2]|0;e=+g[n+(d<<3)>>2];f=+g[n+(d<<3)+4>>2];switch(o>>>5&3|0){case 0:{g[b>>2]=e;g[a+96>>2]=f;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}case 1:{g[u>>2]=e;g[u+4>>2]=f;c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];Ko(t,s);w=c[t+4>>2]|0;c[b>>2]=c[t>>2];c[a+96>>2]=w;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}case 2:{g[w>>2]=e;g[w+4>>2]=f;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];Ko(v,s);q=-+g[v+4>>2];g[b>>2]=-+g[v>>2];g[a+96>>2]=q;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}case 3:{g[b>>2]=-e;g[a+96>>2]=-f;w=a+88|0;a=a+84|0;g[a>>2]=x;g[w>>2]=r;i=y;return}default:{}}}function Di(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+8>>2]|0)>>>0>b>>>0){e=c[a+76>>2]|0;a=c[e+(b<<3)+4>>2]|0;c[d>>2]=c[e+(b<<3)>>2];c[d+4>>2]=a;return}else{Qp(32618,52,1,c[2348]|0)|0;kb(1)}}function Ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();f=t+8|0;h=t;s=a+8|0;if(!(c[s>>2]|0))e=0;else{l=+g[b>>2];m=+g[b+4>>2];n=a+76|0;o=h+4|0;p=0.0;q=0;e=0;while(1){r=c[n>>2]|0;k=m-+g[r+(q<<3)+4>>2];g[h>>2]=l-+g[r+(q<<3)>>2];g[o>>2]=k;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];k=+wo(f);r=(q|0)==0|k>>0>=(c[s>>2]|0)>>>0)break;else p=r?k:p}}c[d>>2]=e;if((c[s>>2]|0)>>>0>e>>>0){s=c[a+76>>2]|0;d=c[s+(e<<3)+4>>2]|0;c[a+92>>2]=c[s+(e<<3)>>2];c[a+96>>2]=d;d=c[b+4>>2]|0;c[a+84>>2]=c[b>>2];c[a+88>>2]=d;i=t;return}else{Qp(32618,52,1,c[2348]|0)|0;kb(1)}}function Fi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();n=q+8|0;o=q;if((c[a>>2]|0)!=60){Qp(32671,56,1,c[2348]|0)|0;kb(1)}p=a+8|0;if((c[p>>2]|0)!=(d|0)){Qp(32728,50,1,c[2348]|0)|0;kb(1)}if(d){e=a+76|0;h=0;do{s=c[b+(h<<3)+4>>2]|0;r=c[e>>2]|0;c[r+(h<<3)>>2]=c[b+(h<<3)>>2];c[r+(h<<3)+4>>2]=s;h=h+1|0}while((h|0)!=(d|0));if((c[a>>2]|0)!=60)e=c[p>>2]|0;else l=10}else l=10;if((l|0)==10){d=c[p>>2]|0;if(!d){i=q;return}h=a+76|0;b=c[h>>2]|0;e=0;f=0.0;k=0.0;do{f=f+ +g[b+(e<<3)>>2];k=k+ +g[b+(e<<3)+4>>2];e=e+1|0}while((e|0)!=(d|0));t=+(d>>>0);m=f/t;f=k/t;e=b+4|0;k=+g[e>>2]-f;g[b>>2]=+g[b>>2]-m;g[e>>2]=k;e=c[p>>2]|0;if(e>>>0>1){d=1;do{e=c[h>>2]|0;s=e+(d<<3)|0;e=e+(d<<3)+4|0;t=+g[e>>2]-f;g[s>>2]=+g[s>>2]-m;g[e>>2]=t;d=d+1|0;e=c[p>>2]|0}while(d>>>0>>0)}}if(!e){i=q;return}h=a+76|0;d=o+4|0;f=0.0;b=0;do{s=c[h>>2]|0;e=c[s+(b<<3)+4>>2]|0;c[o>>2]=c[s+(b<<3)>>2];c[d>>2]=e;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];t=+wo(n);f=f+t*t;b=b+1|0;e=c[p>>2]|0}while(b>>>0>>0);f=+O(+(f/+(e>>>0)));if(!e){i=q;return}else e=0;do{s=c[h>>2]|0;r=s+(e<<3)|0;s=s+(e<<3)+4|0;t=+g[s>>2]/f;g[r>>2]=+g[r>>2]/f;g[s>>2]=t;e=e+1|0}while(e>>>0<(c[p>>2]|0)>>>0);i=q;return}function Gi(a,b){a=a|0;b=b|0;if((c[a>>2]|0)==(b|0)){b=a;return b|0}Hi(a);b=di(b)|0;return b|0}function Hi(a){a=a|0;var b=0;b=c[a+76>>2]|0;if(b|0)Yp(b);b=c[a+244>>2]|0;if(b|0)Yp(b);b=c[a>>2]|0;switch(b|0){case 50:{Yp(c[a+100>>2]|0);Yp(a);return}case 51:{Yp(c[a+100>>2]|0);Yp(a);return}default:{if(!(Ui(b)|0)){Yp(a);return}Yp(c[a+232>>2]|0);Yp(a);return}}}function Ii(a){a=a|0;var b=0;b=Np()|0;return (b>>>0)%((c[a+8>>2]|0)>>>0)|0|0}function Ji(a){a=a|0;return c[a+4>>2]|0}function Ki(a){a=a|0;return c[a>>2]|0}function Li(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+8>>2]|0)>>>0<=b>>>0){Qp(31955,65,1,c[2348]|0)|0;kb(1)}if(!(c[a+80>>2]|0)){tb[c[a+236>>2]&31](a,b,d);return}else{e=c[a+76>>2]|0;a=c[e+(b<<3)+4>>2]|0;c[d>>2]=c[e+(b<<3)>>2];c[d+4>>2]=a;return}}function Mi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e+8|0;h=e;g=c[a+240>>2]|0;k=c[b+4>>2]|0;c[h>>2]=c[b>>2];c[h+4>>2]=k;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];tb[g&31](a,f,d);i=e;return}function Ni(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=i;i=i+48|0;if((i|0)>=(j|0))ba();h=o+32|0;k=o+24|0;l=o+16|0;n=o+8|0;m=o;switch(c[b>>2]|0){case 60:{n=c[d+4>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=n;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];Oi(b,h,e,f);i=o;return}case 47:{p=+g[d>>2];d=c[d+4>>2]|0;n=~~(p*-2.0*4.0*16.0+127.0);n=(n|0)>255?255:n;a[f>>0]=(n|0)<0?0:n;n=!(p>0.0);g[b+92>>2]=n?-1.0:1.0;g[b+96>>2]=0.0;g[b+84>>2]=p;c[b+88>>2]=d;c[e>>2]=n&1;i=o;return}case 48:{q=+g[d>>2];p=+g[d+4>>2];d=~~(p*-2.0*5.800000190734863*16.0+127.0);d=(d|0)>255?255:d;a[f>>0]=(d|0)<0?0:d;d=~~(q*-2.0*5.800000190734863*16.0+127.0);d=(d|0)>255?255:d;a[f+1>>0]=(d|0)<0?0:d;d=!(q>0.0);n=p>0.0;c[e>>2]=(n?0:2)|d&1;g[b+92>>2]=(d?-.7071067811865476:.7071067811865476)+(n?0.0:-0.0);g[b+96>>2]=n?.7071067690849304:-.7071067690849304;g[b+84>>2]=q;g[b+88>>2]=p;i=o;return}default:{if(c[b+244>>2]|0?c[b+248>>2]|0:0){n=c[d+4>>2]|0;c[l>>2]=c[d>>2];c[l+4>>2]=n;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];Pi(b,h,e,f);i=o;return}l=c[b+240>>2]|0;k=c[d+4>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=k;c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];tb[l&31](b,h,n);n=c[n>>2]|0;c[e>>2]=n;Xi(n,c[b+4>>2]|0,f);i=o;return}}}function Oi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,L=0,M=0.0;L=i;i=i+32|0;if((i|0)>=(j|0))ba();A=L+24|0;B=L+16|0;C=L+8|0;D=L;H=c[b+4>>2]|0;I=b+8|0;E=c[I>>2]|0;J=+(E>>>0)*1.2000000476837158;K=i;i=i+((1*(H<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();G=i;i=i+((1*(H<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();F=(H|0)==0;if(!F){h=0;do{g[K+(h<<2)>>2]=4.0;g[G+(h<<2)>>2]=4.0;h=h+1|0}while((h|0)!=(H|0))}a:do if(!E)k=0;else{v=b+76|0;w=+g[d>>2];x=+g[d+4>>2];y=C+4|0;z=B+4|0;t=H+-1|0;if(F){s=0.0;q=0;k=0;while(1){u=c[v>>2]|0;m=w-+g[u+(q<<3)>>2];n=x-+g[u+(q<<3)+4>>2];g[C>>2]=m;g[y>>2]=n;c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];Ko(B,A);o=+g[B>>2];p=+g[z>>2];l=m*o-n*p;M=n*o+m*p;if((l!=l|0.0!=0.0)&(M!=M|0.0!=0.0)){ao(D,m,n,o,p);l=+g[D>>2]}h=(q|0)==0|l>2]|0;l=w-+g[r+(u<<3)>>2];m=x-+g[r+(u<<3)+4>>2];g[C>>2]=l;g[y>>2]=m;c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];Ko(B,A);n=+g[B>>2];o=+g[z>>2];p=l*n-m*o;M=m*n+l*o;if((p!=p|0.0!=0.0)&(M!=M|0.0!=0.0)){ao(D,l,m,n,o);p=+g[D>>2]}r=(u|0)==0|p>2])g[h>>2]=p}else{h=G+(q<<2)|0;if(p<+g[h>>2])g[h>>2]=p}q=q+1|0}while((q|0)!=(H|0));u=u+1|0;if((u|0)==(E|0))break;else s=r?p:s}}while(0);if(!F){h=0;do{F=~~(J*(+g[K+(h<<2)>>2]-+g[G+(h<<2)>>2])*16.0+127.0);F=(F|0)>255?255:F;a[f+h>>0]=(F|0)<0?0:F;h=h+1|0}while((h|0)!=(H|0))}c[e>>2]=k;if((c[I>>2]|0)>>>0>k>>>0){e=c[b+76>>2]|0;f=c[e+(k<<3)+4>>2]|0;c[b+92>>2]=c[e+(k<<3)>>2];c[b+96>>2]=f;f=c[d+4>>2]|0;c[b+84>>2]=c[d>>2];c[b+88>>2]=f;i=L;return}else{Qp(32618,52,1,c[2348]|0)|0;kb(1)}}function Pi(b,e,f,h){b=b|0;e=e|0;f=f|0;h=h|0;var l=0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0.0,I=0,J=0,K=0,L=0,M=0.0;L=i;i=i+48|0;if((i|0)>=(j|0))ba();n=L+40|0;F=L+32|0;K=L+16|0;t=L+24|0;s=L+8|0;u=L;l=c[e>>2]|0;e=c[e+4>>2]|0;G=c[b+240>>2]|0;c[F>>2]=l;c[F+4>>2]=e;c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];tb[G&31](b,n,K);G=c[b+4>>2]|0;D=b+8|0;H=+((c[D>>2]|0)>>>0)*1.2000000476837158;I=i;i=i+((1*(G<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();J=i;i=i+((1*(G<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();E=(G|0)==0;C=(c[k>>2]=l,+g[k>>2]);B=(c[k>>2]=e,+g[k>>2]);if(!E){e=0;do{g[I+(e<<2)>>2]=8.0;g[J+(e<<2)>>2]=8.0;e=e+1|0}while((e|0)!=(G|0))}z=c[b+244>>2]|0;A=c[b+248>>2]|0;q=C-+g[b+92>>2];r=B-+g[b+96>>2];g[s>>2]=q;g[s+4>>2]=r;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];Ko(t,n);p=+g[t>>2];o=+g[t+4>>2];m=q*p-r*o;M=r*p+q*o;if((m!=m|0.0!=0.0)&(M!=M|0.0!=0.0)){ao(u,q,r,p,o);m=+g[u>>2]}if(!E){e=c[K>>2]|0;l=G+-1|0;n=0;do{if(!(e&1<>2]=m;else g[J+(n<<2)>>2]=m;n=n+1|0}while((n|0)!=(G|0))}a:do if(A|0){u=b+80|0;v=b+236|0;w=F+4|0;x=G+-1|0;y=b+76|0;if(E){l=0;while(1){e=d[z+((_(c[K>>2]|0,A)|0)+l)>>0]|0;if(!(c[u>>2]|0)){if((c[D>>2]|0)>>>0<=e>>>0)break;tb[c[v>>2]&31](b,e,F)}else{s=c[y>>2]|0;t=c[s+(e<<3)+4>>2]|0;c[F>>2]=c[s+(e<<3)>>2];c[w>>2]=t}l=l+1|0;if(l>>>0>=A>>>0)break a}t=c[2348]|0;Qp(31955,65,1,t)|0;kb(1)}l=c[K>>2]|0;t=0;while(1){e=d[z+((_(l,A)|0)+t)>>0]|0;if(!(c[u>>2]|0)){if((c[D>>2]|0)>>>0<=e>>>0)break;tb[c[v>>2]&31](b,e,F);m=+g[F>>2];o=+g[w>>2];l=c[K>>2]|0}else{s=c[y>>2]|0;n=c[s+(e<<3)>>2]|0;s=c[s+(e<<3)+4>>2]|0;c[F>>2]=n;c[w>>2]=s;m=(c[k>>2]=n,+g[k>>2]);o=(c[k>>2]=s,+g[k>>2])}M=C-m;m=B-o;m=M*M+m*m;n=d[z+((_(l,A)|0)+t)>>0]|0;s=0;do{if(!(n&1<>2])g[e>>2]=m}else{e=J+(s<<2)|0;if(m<+g[e>>2])g[e>>2]=m}s=s+1|0}while((s|0)!=(G|0));t=t+1|0;if(t>>>0>=A>>>0)break a}b=c[2348]|0;Qp(31955,65,1,b)|0;kb(1)}while(0);if(E){K=c[K>>2]|0;c[f>>2]=K;i=L;return}else e=0;do{b=~~(H*(+g[I+(e<<2)>>2]-+g[J+(e<<2)>>2])*16.0+127.0);b=(b|0)>255?255:b;a[h+e>>0]=(b|0)<0?0:b;e=e+1|0}while((e|0)!=(G|0));K=c[K>>2]|0;c[f>>2]=K;i=L;return}function Qi(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,h=0.0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0;l=i;i=i+32|0;if((i|0)>=(j|0))ba();o=l+24|0;n=l+16|0;p=l+8|0;f=l;h=+g[a+84>>2];k=+g[a+88>>2];q=c[a+96>>2]|0;c[p>>2]=c[a+92>>2];c[p+4>>2]=q;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];Ko(n,o);b=+g[n>>2];d=+g[n+4>>2];m=h*b-k*d;e=k*b+h*d;if(!((m!=m|0.0!=0.0)&(e!=e|0.0!=0.0))){m=e;i=l;return +m}ao(f,h,k,b,d);m=+g[f+4>>2];i=l;return +m}function Ri(a){a=a|0;var b=0,d=0.0,e=0,f=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();e=b+8|0;f=b;d=+g[a+96>>2]-+g[a+88>>2];g[f>>2]=+g[a+92>>2]-+g[a+84>>2];g[f+4>>2]=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];d=+wo(e);i=b;return +d}function Si(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;b=0;do{if(!(dp(a,c[636+(b<<4)>>2]|0)|0)){e=5;break}b=b+1|0}while(b>>>0<61);if((e|0)==5){i=f;return b|0}e=c[2348]|0;c[d>>2]=a;Kp(e,35245,d)|0;e=0;i=f;return e|0}function Ti(a){a=a|0;return (a+-9|0)>>>0<8|0}function Ui(a){a=a|0;return (a+-40|0)>>>0<7|0}function Vi(a){a=a|0;return a>>>1^a|0}function Wi(a){a=a|0;return a>>>1^a^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^a>>>16|0}function Xi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;if(d>>>0>16){g=c[2348]|0;c[f>>2]=16;Kp(g,35316,f)|0;kb(1)}if(!d){i=h;return}f=d+-1|0;g=0;do{a[e+g>>0]=((1<>31;g=g+1|0}while((g|0)!=(d|0));i=h;return}function Yi(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;m=Rh(d)|0;m=Rj(m>>>0<4?4:m>>>0>8?8:m)|0;n=(d|0)==0;if(n){Sj(m);k=c[2348]|0;Qp(35892,69,1,k)|0;kb(1)}else{i=0;l=0}do{k=(Uj(m,3)|0)&1;do if(a[b+l>>0]|0)if(!(l&1)){g[e+(l<<3)>>2]=k|0?1.0:-1.0;g[e+(l<<3)+4>>2]=0.0;i=i+1|0;break}else{g[e+(l<<3)>>2]=0.0;g[e+(l<<3)+4>>2]=0.0;break}else{g[e+(l<<3)>>2]=0.0;g[e+(l<<3)+4>>2]=0.0}while(0);l=l+1|0}while((l|0)!=(d|0));Sj(m);if(!i){m=c[2348]|0;Qp(35892,69,1,m)|0;kb(1)}c[h>>2]=i;fl(d,e,f,-1,0);j=1.0/+O(+(+(i>>>0)));if(n)return;else i=0;do{e=f+(i<<3)|0;n=f+(i<<3)+4|0;o=j*+g[n>>2];g[e>>2]=j*+g[e>>2];g[n>>2]=o;i=i+1|0}while((i|0)!=(d|0));return}function Zi(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;m=Rh(d)|0;m=Rj(m>>>0<4?5:(m>>>0>8?8:m)+1|0)|0;n=(d|0)==0;if(n){Sj(m);k=c[2348]|0;Qp(35962,69,1,k)|0;kb(1)}else{i=0;l=0}do{k=Uj(m,3)|0;if(!(a[b+l>>0]|0))j=0.0;else{j=k&1|0?1.0:-1.0;i=i+1|0}g[e+(l<<3)>>2]=j;g[e+(l<<3)+4>>2]=0.0;l=l+1|0}while((l|0)!=(d|0));Sj(m);if(!i){m=c[2348]|0;Qp(35962,69,1,m)|0;kb(1)}c[h>>2]=i;fl(d,e,f,-1,0);j=1.0/+O(+(+(i>>>0)));if(n)return;else i=0;do{e=f+(i<<3)|0;n=f+(i<<3)+4|0;o=j*+g[n>>2];g[e>>2]=j*+g[e>>2];g[n>>2]=o;i=i+1|0}while((i|0)!=(d|0));return}function _i(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(b>>>0<6)Qp(36032,66,1,c[2348]|0)|0;e=(b>>>0)/10|0;h=b>>>0>34?8:4;j=h>>>1;if(b|0)eq(d|0,0,b|0)|0;i=(b>>>1)-(e>>>0<2?2:e)|0;e=i>>>0>1;if(!e)return;f=h+-1|0;g=1;do{a[d+g>>0]=(g+j&f|0)==0?1:2;g=g+1|0}while(g>>>0>>0);if(!e)return;e=h+-1|0;f=1;do{a[d+(b-f)>>0]=(f+j&e|0)==0?1:2;f=f+1|0}while(f>>>0>>0);return}function $i(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();r=s;a:do if(!d){o=0;p=0;q=0}else{m=0;k=0;l=0;n=0;b:while(1){h=a[b+n>>0]|0;switch(h<<24>>24){case 0:{h=m;k=k+1|0;break}case 1:{h=m;l=l+1|0;break}case 2:{h=m+1|0;break}default:break b}n=n+1|0;if(n>>>0>=d>>>0){o=h;p=k;q=l;break a}else m=h}n=c[2348]|0;c[r>>2]=h&255;Kp(n,36099,r)|0;kb(1)}while(0);c[e>>2]=p;c[f>>2]=q;c[g>>2]=o;i=s;return}function aj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;if(a>>>0<2){Qp(36165,71,1,c[2348]|0)|0;kb(1)}if(a&1|0){Qp(36237,65,1,c[2348]|0)|0;kb(1)}if(b>>>0>a>>>0){Qp(36303,72,1,c[2348]|0)|0;kb(1)}if(d>>>0>b>>>0){Qp(36376,71,1,c[2348]|0)|0;kb(1)}k=Xp(80)|0;c[k>>2]=a;c[k+4>>2]=b;i=k+12|0;c[i>>2]=d;b=Xp(a)|0;h=k+8|0;c[h>>2]=b;if(!e){_i(a,b);b=c[h>>2]|0;d=c[k>>2]|0}else{fq(b|0,e|0,a|0)|0;d=a}a=k+28|0;j=k+32|0;$i(b,d,k+24|0,a,j);b=c[a>>2]|0;d=c[j>>2]|0;if((b|0)==(0-d|0)){Qp(36448,72,1,c[2348]|0)|0;kb(1)}if(!d){Qp(36521,70,1,c[2348]|0)|0;kb(1)}if(b>>>0<2){Qp(36592,71,1,c[2348]|0)|0;kb(1)}l=c[k>>2]|0;m=l<<3;n=Xp(m)|0;c[k+52>>2]=n;m=Xp(m)|0;c[k+56>>2]=m;c[k+48>>2]=Mk(l,n,m,-1,0)|0;m=c[k>>2]|0;n=m<<3;l=Xp(n)|0;c[k+60>>2]=l;e=Xp(n)|0;c[k+64>>2]=e;d=k+68|0;c[d>>2]=Xp(n)|0;b=k+72|0;c[b>>2]=Xp(n)|0;Yi(c[h>>2]|0,m,l,e,k+36|0);Zi(c[h>>2]|0,c[k>>2]|0,c[d>>2]|0,c[b>>2]|0,k+40|0);b=c[i>>2]|0;d=Xp(b<<2)|0;c[k+16>>2]=d;c[k+20>>2]=Xp(b<<3)|0;if(!b){m=c[a>>2]|0;n=c[j>>2]|0;m=n+m|0;f=+(m>>>0);f=+O(+f);f=1.0/f;m=k+44|0;g[m>>2]=f;m=Rj(8)|0;n=k+76|0;c[n>>2]=m;return k|0}f=+(b>>>0);e=0;do{o=+R(+((+(e>>>0)+.5)/f*1.5707963267948966));g[d+(e<<2)>>2]=o*o;e=e+1|0}while(e>>>0>>0);m=c[a>>2]|0;n=c[j>>2]|0;m=n+m|0;o=+(m>>>0);o=+O(+o);o=1.0/o;m=k+44|0;g[m>>2]=o;m=Rj(8)|0;n=k+76|0;c[n>>2]=m;return k|0}function bj(a){a=a|0;Yp(c[a+8>>2]|0);Yp(c[a+52>>2]|0);Yp(c[a+56>>2]|0);dl(c[a+48>>2]|0);Yp(c[a+16>>2]|0);Yp(c[a+20>>2]|0);Yp(c[a+60>>2]|0);Yp(c[a+64>>2]|0);Yp(c[a+68>>2]|0);Yp(c[a+72>>2]|0);Sj(c[a+76>>2]|0);Yp(a);return}function cj(a){a=a|0;var b=0,d=0,e=0;Vj(c[a+76>>2]|0);d=a+12|0;if(!(c[d>>2]|0))return;a=a+20|0;b=0;do{e=c[a>>2]|0;g[e+(b<<3)>>2]=0.0;g[e+(b<<3)+4>>2]=0.0;b=b+1|0}while(b>>>0<(c[d>>2]|0)>>>0);return}function dj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0;d=c[a>>2]|0;h=a+4|0;e=c[h>>2]|0;if((e|0)!=(0-d|0)){i=a+64|0;f=0;do{k=((d+f-(e<<1)|0)>>>0)%(d>>>0)|0;l=c[i>>2]|0;j=c[l+(k<<3)+4>>2]|0;c[b+(f<<3)>>2]=c[l+(k<<3)>>2];c[b+(f<<3)+4>>2]=j;f=f+1|0;d=c[a>>2]|0;e=c[h>>2]|0}while(f>>>0<(e+d|0)>>>0)}f=a+12|0;if(!(c[f>>2]|0))return;d=a+16|0;e=0;do{n=+g[(c[d>>2]|0)+(e<<2)>>2];k=b+(e<<3)|0;l=b+(e<<3)+4|0;m=n*+g[l>>2];g[k>>2]=n*+g[k>>2];g[l>>2]=m;e=e+1|0}while(e>>>0<(c[f>>2]|0)>>>0);return}function ej(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=c[a>>2]|0;h=a+4|0;e=c[h>>2]|0;g=a+64|0;if((e|0)!=(0-d|0)){f=0;do{j=((d+f-e|0)>>>0)%(d>>>0)|0;k=c[g>>2]|0;i=c[k+(j<<3)+4>>2]|0;c[b+(f<<3)>>2]=c[k+(j<<3)>>2];c[b+(f<<3)+4>>2]=i;f=f+1|0;d=c[a>>2]|0;e=c[h>>2]|0}while(f>>>0<(e+d|0)>>>0)}gq(c[a+20>>2]|0,c[g>>2]|0,c[a+12>>2]<<3|0)|0;return}function fj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0.0;i=a+56|0;gq(c[i>>2]|0,c[a+72>>2]|0,c[a>>2]<<3|0)|0;e=a+4|0;h=c[e>>2]|0;gq(b|0,(c[i>>2]|0)+((c[a>>2]|0)-h<<3)|0,h<<3|0)|0;gq(b+(c[e>>2]<<3)|0,c[i>>2]|0,c[a>>2]<<3|0)|0;e=a+12|0;if(!(c[e>>2]|0)){b=0;h=a+20|0;h=c[h>>2]|0;i=c[i>>2]|0;gq(h|0,i|0,b|0)|0;return}f=a+16|0;h=a+20|0;d=0;do{j=+g[(c[f>>2]|0)+(d<<2)>>2];k=b+(d<<3)|0;a=b+(d<<3)+4|0;n=j*+g[k>>2];j=j*+g[a>>2];g[k>>2]=n;g[a>>2]=j;m=c[h>>2]|0;l=+g[(c[f>>2]|0)+((c[e>>2]|0)+~d<<2)>>2];j=j+ +g[m+(d<<3)+4>>2]*l;g[k>>2]=n+ +g[m+(d<<3)>>2]*l;g[a>>2]=j;d=d+1|0;a=c[e>>2]|0}while(d>>>0>>0);m=a<<3;b=h;b=c[b>>2]|0;k=c[i>>2]|0;gq(b|0,k|0,m|0)|0;return}function gj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0;f=c[b>>2]|0;a:do if(f|0){i=b+8|0;j=b+44|0;k=b+52|0;l=b+76|0;h=0;while(1){f=(((f>>>1)+h|0)>>>0)%(f>>>0)|0;switch(a[(c[i>>2]|0)+f>>0]|0){case 0:{m=c[k>>2]|0;g[m+(f<<3)>>2]=0.0;g[m+(f<<3)+4>>2]=0.0;break}case 1:{n=(Tj(c[l>>2]|0)|0)!=0;m=c[k>>2]|0;g[m+(f<<3)>>2]=+g[j>>2]*(n?1.0:-1.0);g[m+(f<<3)+4>>2]=0.0;break}default:{p=+g[j>>2];o=+g[d+(f<<3)+4>>2]*p;n=c[k>>2]|0;g[n+(f<<3)>>2]=+g[d+(f<<3)>>2]*p;g[n+(f<<3)+4>>2]=o}}h=h+1|0;f=c[b>>2]|0;if(h>>>0>=f>>>0)break a}}while(0);el(c[b+48>>2]|0);i=b+4|0;n=c[i>>2]|0;l=b+56|0;gq(e|0,(c[l>>2]|0)+((c[b>>2]|0)-n<<3)|0,n<<3|0)|0;gq(e+(c[i>>2]<<3)|0,c[l>>2]|0,c[b>>2]<<3|0)|0;i=b+12|0;if(!(c[i>>2]|0)){n=0;e=b+20|0;e=c[e>>2]|0;m=c[l>>2]|0;gq(e|0,m|0,n|0)|0;return}j=b+16|0;k=b+20|0;h=0;do{p=+g[(c[j>>2]|0)+(h<<2)>>2];n=e+(h<<3)|0;f=e+(h<<3)+4|0;q=p*+g[n>>2];p=p*+g[f>>2];g[n>>2]=q;g[f>>2]=p;m=c[k>>2]|0;o=+g[(c[j>>2]|0)+((c[i>>2]|0)+~h<<2)>>2];p=p+ +g[m+(h<<3)+4>>2]*o;g[n>>2]=q+ +g[m+(h<<3)>>2]*o;g[f>>2]=p;h=h+1|0;f=c[i>>2]|0}while(h>>>0>>0);n=f<<3;e=k;e=c[e>>2]|0;m=c[l>>2]|0;gq(e|0,m|0,n|0)|0;return}function hj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0;f=a+12|0;d=c[f>>2]|0;if(!d)return;h=a+20|0;e=a+16|0;a=0;do{k=c[h>>2]|0;j=+g[(c[e>>2]|0)+(d+~a<<2)>>2];i=+g[k+(a<<3)+4>>2]*j;g[b+(a<<3)>>2]=+g[k+(a<<3)>>2]*j;g[b+(a<<3)+4>>2]=i;a=a+1|0;d=c[f>>2]|0}while(d>>>0>a>>>0);return}function ij(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0;l=Xp(216)|0;if(a>>>0>=8){if(a&1|0){Qp(36722,66,1,c[2348]|0)|0;kb(1)}if(b>>>0>a>>>0){Qp(36789,88,1,c[2348]|0)|0;kb(1)}}else Qp(36664,57,1,c[2348]|0)|0;c[l>>2]=a;k=l+8|0;c[k>>2]=b;c[l+4>>2]=a>>>1;d=Xp(a)|0;j=l+12|0;c[j>>2]=d;if(!e){_i(a,d);d=c[j>>2]|0;b=c[l>>2]|0}else{fq(d|0,e|0,a|0)|0;b=a}e=l+20|0;a=l+24|0;$i(d,b,l+16|0,e,a);d=c[e>>2]|0;b=c[a>>2]|0;if((d|0)==(0-b|0)){Qp(36878,73,1,c[2348]|0)|0;kb(1)}if(!b){Qp(36952,71,1,c[2348]|0)|0;kb(1)}if(d>>>0<2){Qp(37024,72,1,c[2348]|0)|0;kb(1)}p=c[l>>2]|0;m=p<<3;q=Xp(m)|0;c[l+52>>2]=q;m=Xp(m)|0;c[l+56>>2]=m;c[l+48>>2]=Mk(p,m,q,1,0)|0;c[l+60>>2]=qk((c[k>>2]|0)+(c[l>>2]|0)|0)|0;q=c[l>>2]|0;m=q<<3;p=Xp(m)|0;c[l+64>>2]=p;n=Xp(m)|0;c[l+68>>2]=n;b=l+72|0;c[b>>2]=Xp(m)|0;d=l+76|0;c[d>>2]=Xp(m)|0;m=l+28|0;Yi(c[j>>2]|0,q,p,n,m);n=l+32|0;Zi(c[j>>2]|0,c[l>>2]|0,c[b>>2]|0,c[d>>2]|0,n);j=c[l>>2]|0;i=+(j>>>0);o=+O(+i);g[l+36>>2]=o/+O(+(+(((c[a>>2]|0)+(c[e>>2]|0)|0)>>>0)));g[l+40>>2]=o/+O(+(+((c[m>>2]|0)>>>0)));g[l+44>>2]=o/+O(+(+((c[n>>2]|0)>>>0)));g[l+80>>2]=1.0;a=j<<3;n=Xp(a)|0;c[l+84>>2]=n;m=Xp(a)|0;c[l+88>>2]=m;e=Xp(a)|0;c[l+92>>2]=e;d=Xp(a)|0;b=l+96|0;c[b>>2]=d;c[l+100>>2]=Xp(a)|0;eq(n|0,0,a|0)|0;eq(m|0,0,a|0)|0;eq(e|0,0,a|0)|0;eq(d|0,0,a|0)|0;k=c[k>>2]|0;k=k>>>0<2?k:2;c[l+132>>2]=k;i=+(k>>>0)*2.0*3.141592653589793/i;if(j|0?(r=i*0.0,o=+R(+r),g[d>>2]=+Q(+r)+o*0.0,g[d+4>>2]=o,(c[l>>2]|0)>>>0>1):0){d=1;do{q=c[b>>2]|0;o=i*+(d>>>0);r=+R(+o);g[q+(d<<3)>>2]=+Q(+o)+r*0.0;g[q+(d<<3)+4>>2]=r;d=d+1|0}while(d>>>0<(c[l>>2]|0)>>>0)}c[l+160>>2]=f;c[l+164>>2]=h;q=l+108|0;c[q>>2]=zj(0)|0;d=l+112|0;c[d>>2]=Rj(8)|0;Dj(c[q>>2]|0);Vj(c[d>>2]|0);d=l+136|0;q=l+116|0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;d=c[l>>2]|0;if(d>>>0>44){g[l+152>>2]=.3499999940395355;r=.30000001192092896;q=l+156|0;g[q>>2]=r;q=l+104|0;c[q>>2]=0;q=l+168|0;p=l+208|0;c[p>>2]=0;p=l+212|0;c[p>>2]=0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;return l|0}else{r=+((44-d|0)>>>0)*.009999999776482582;g[l+152>>2]=r+.3499999940395355;r=r+.30000001192092896;q=l+156|0;g[q>>2]=r;q=l+104|0;c[q>>2]=0;q=l+168|0;p=l+208|0;c[p>>2]=0;p=l+212|0;c[p>>2]=0;c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;c[q+16>>2]=0;c[q+20>>2]=0;c[q+24>>2]=0;c[q+28>>2]=0;return l|0}return 0}function jj(a){a=a|0;var b=0,d=0,e=0.0;Dj(c[a+108>>2]|0);Vj(c[a+112>>2]|0);b=a+136|0;d=a+116|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;b=c[a>>2]|0;if(b>>>0>44){g[a+152>>2]=.3499999940395355;e=.30000001192092896;d=a+156|0;g[d>>2]=e;d=a+104|0;c[d>>2]=0;return}else{g[a+152>>2]=+((44-b|0)>>>0)*.009999999776482582+.3499999940395355;e=+((44-b|0)>>>0)*.009999999776482582+.30000001192092896;d=a+156|0;g[d>>2]=e;d=a+104|0;c[d>>2]=0;return}}function kj(a){a=a|0;var b=0;b=c[a+176>>2]|0;if(b|0)uk(b);b=c[a+180>>2]|0;if(b|0)pk(b);b=c[a+184>>2]|0;if(b|0)uk(b);b=c[a+188>>2]|0;if(b|0)Yp(b);b=c[a+192>>2]|0;if(b|0)Yp(b);b=c[a+196>>2]|0;if(b|0)Yp(b);b=c[a+208>>2]|0;if(b|0)pk(b);b=c[a+212>>2]|0;if(b|0)pk(b);Yp(c[a+12>>2]|0);uk(c[a+60>>2]|0);Yp(c[a+52>>2]|0);Yp(c[a+56>>2]|0);dl(c[a+48>>2]|0);Yp(c[a+64>>2]|0);Yp(c[a+68>>2]|0);Yp(c[a+72>>2]|0);Yp(c[a+76>>2]|0);Yp(c[a+84>>2]|0);Yp(c[a+88>>2]|0);Yp(c[a+92>>2]|0);Yp(c[a+96>>2]|0);Yp(c[a+100>>2]|0);Ej(c[a+108>>2]|0);Sj(c[a+112>>2]|0);Yp(a);return}function lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0;I=i;i=i+48|0;if((i|0)>=(j|0))ba();h=I+40|0;G=I+16|0;H=I;k=I+32|0;l=I+24|0;w=I+8|0;if(!d){i=I;return}z=H+4|0;A=a+104|0;B=a+60|0;C=l+4|0;D=a+168|0;E=a+124|0;m=a+4|0;n=a+8|0;o=a+84|0;p=a+80|0;q=G+4|0;r=a+140|0;s=a+136|0;t=a+176|0;u=w+4|0;v=a+180|0;x=a+108|0;y=k+4|0;F=0;do{e=c[b+(F<<3)>>2]|0;f=c[b+(F<<3)+4>>2]|0;c[H>>2]=e;c[z>>2]=f;if(c[A>>2]|0){J=c[x>>2]|0;c[k>>2]=e;c[y>>2]=f;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];Mj(J,h,H);Ij(c[x>>2]|0);e=c[H>>2]|0;f=c[z>>2]|0}J=c[B>>2]|0;c[l>>2]=e;c[C>>2]=f;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];tk(J,h);if(c[D>>2]|0){J=c[t>>2]|0;f=c[z>>2]|0;c[w>>2]=c[H>>2];c[u>>2]=f;c[h>>2]=c[w>>2];c[h+4>>2]=c[w+4>>2];tk(J,h);L=+g[H>>2];K=+g[z>>2];ok(c[v>>2]|0,L*L+K*K)}switch(c[A>>2]|0){case 0:{mj(a);break}case 1:{J=(c[E>>2]|0)+1|0;c[E>>2]=J;if(J>>>0>=(c[m>>2]|0)>>>0){c[E>>2]=0;sk(c[B>>2]|0,h);nj(a,(c[h>>2]|0)+(c[n>>2]<<3)|0,c[o>>2]|0);oj(a,c[o>>2]|0,G);K=+g[p>>2];L=K*+g[q>>2];g[s>>2]=K*+g[G>>2];g[r>>2]=L;c[A>>2]=2}break}case 2:{pj(a);break}case 3:{qj(a);break}case 4:{tj(a);break}default:{}}F=F+1|0}while((F|0)!=(d|0));i=I;return}function mj(a){a=a|0;var b=0.0,d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=i;i=i+48|0;if((i|0)>=(j|0))ba();n=q+32|0;d=q+24|0;m=q+8|0;h=q+16|0;o=q;p=a+124|0;l=(c[p>>2]|0)+1|0;c[p>>2]=l;if(l>>>0<(c[a>>2]|0)>>>0){i=q;return}c[p>>2]=0;sk(c[a+60>>2]|0,d);k=c[a+8>>2]|0;l=c[a>>2]|0;e=k+l|0;f=c[d>>2]|0;if(k>>>0>>0){b=0.0;d=k;do{s=+g[f+(d<<3)>>2];r=+g[f+(d<<3)+4>>2];b=b+(s*s+r*r);d=d+1|0}while(d>>>0>>0)}else b=0.0;t=+(l>>>0)/b;d=a+84|0;nj(a,f+(k<<3)|0,c[d>>2]|0);oj(a,c[d>>2]|0,m);d=m+4|0;r=t*+g[m>>2];s=t*+g[d>>2];g[m>>2]=r;g[d>>2]=s;g[h>>2]=r;g[h+4>>2]=s;c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];b=+Bo(n);d=a+4|0;e=c[d>>2]|0;g[a+80>>2]=t;g[o>>2]=r;g[o+4>>2]=s;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];s=+wo(n);if(s>+g[a+152>>2]){n=~~+dq(+(b*+(e>>>0)/6.283185307179586));o=c[a>>2]|0;c[p>>2]=(((o+n|0)>>>0)%((c[d>>2]|0)>>>0)|0)+o;c[a+104>>2]=1}i=q;return}function nj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+32|0;if((i|0)>=(j|0))ba();x=B+24|0;y=B+16|0;z=B+8|0;A=B;gq(c[b+56>>2]|0,d|0,c[b>>2]<<3|0)|0;el(c[b+48>>2]|0);p=+O(+(+((c[b+28>>2]|0)>>>0)));w=c[b>>2]|0;p=p/+(w>>>0);if(!w){i=B;return}q=b+12|0;r=b+52|0;s=b+64|0;t=z+4|0;u=y+4|0;v=A+4|0;w=0;do{if((w&1|0)==0?(a[(c[q>>2]|0)+w>>0]|0)!=0:0){d=c[r>>2]|0;l=+g[d+(w<<3)>>2];m=+g[d+(w<<3)+4>>2];d=c[s>>2]|0;k=c[d+(w<<3)+4>>2]|0;c[z>>2]=c[d+(w<<3)>>2];c[t>>2]=k;c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];Ko(y,x);n=+g[y>>2];o=+g[u>>2];h=l*n-m*o;f=m*n+l*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(A,l,m,n,o);h=+g[A>>2];f=+g[v>>2]}k=e+(w<<3)|0;d=e+(w<<3)+4|0;g[k>>2]=h;g[d>>2]=f}else{k=e+(w<<3)|0;d=e+(w<<3)+4|0;g[k>>2]=0.0;g[d>>2]=0.0;h=0.0;f=0.0}g[k>>2]=p*h;g[d>>2]=p*f;w=w+1|0}while(w>>>0<(c[b>>2]|0)>>>0);i=B;return}function oj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+48|0;if((i|0)>=(j|0))ba();r=z+32|0;s=z+24|0;t=z+16|0;u=z+8|0;y=z;h=c[a>>2]|0;if(!h){f=0.0;e=0.0}else{v=t+4|0;w=s+4|0;x=u+4|0;q=0;f=0.0;e=0.0;do{A=q;q=q+2|0;h=(q>>>0)%(h>>>0)|0;m=+g[b+(h<<3)>>2];n=+g[b+(h<<3)+4>>2];h=c[b+(A<<3)+4>>2]|0;c[t>>2]=c[b+(A<<3)>>2];c[v>>2]=h;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];Ko(s,r);o=+g[s>>2];p=+g[w>>2];k=m*o-n*p;l=n*o+m*p;if((k!=k|0.0!=0.0)&(l!=l|0.0!=0.0)){ao(u,m,n,o,p);k=+g[u>>2];l=+g[x>>2]}f=f+k;e=e+l;h=c[a>>2]|0}while(q>>>0>>0)}_n(y,f,e,+((c[a+28>>2]|0)>>>0),0.0);A=c[y+4>>2]|0;c[d>>2]=c[y>>2];c[d+4>>2]=A;i=z;return}function pj(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,h=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;I=i;i=i+128|0;if((i|0)>=(j|0))ba();F=I+112|0;E=I+88|0;f=I+64|0;e=I+104|0;n=I+96|0;o=I+80|0;p=I+72|0;y=I+56|0;z=I+48|0;A=I+40|0;B=I+32|0;C=I+24|0;D=I+16|0;x=I+8|0;G=I;h=a+124|0;w=(c[h>>2]|0)+1|0;c[h>>2]=w;H=a+4|0;if(w>>>0<(c[H>>2]|0)>>>0){i=I;return}w=a+8|0;c[h>>2]=(c[w>>2]|0)+(c[a>>2]|0)-(c[a+132>>2]|0);sk(c[a+60>>2]|0,E);q=a+88|0;nj(a,(c[E>>2]|0)+(c[w>>2]<<3)|0,c[q>>2]|0);oj(a,c[q>>2]|0,f);u=+g[a+80>>2];w=f+4|0;t=u*+g[f>>2];u=u*+g[w>>2];g[f>>2]=t;g[w>>2]=u;g[a+144>>2]=t;g[a+148>>2]=u;u=u+ +g[a+140>>2];g[e>>2]=t+ +g[a+136>>2];g[e+4>>2]=u;c[F>>2]=c[e>>2];c[F+4>>2]=c[e+4>>2];u=+Bo(F);e=c[H>>2]|0;w=~~+dq(+(u*+(e>>>0)/6.283185307179586));c[h>>2]=(c[h>>2]|0)-w;if(c[a>>2]|0){e=a+84|0;f=o+4|0;h=n+4|0;m=0;do{v=c[q>>2]|0;b=+g[v+(m<<3)>>2];d=+g[v+(m<<3)+4>>2];v=c[e>>2]|0;w=c[v+(m<<3)+4>>2]|0;c[o>>2]=c[v+(m<<3)>>2];c[f>>2]=w;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];Ko(n,F);k=+g[n>>2];l=+g[h>>2];t=b*k-d*l;u=d*k+b*l;if((t!=t|0.0!=0.0)&(u!=u|0.0!=0.0))ao(p,b,d,k,l);m=m+1|0}while(m>>>0<(c[a>>2]|0)>>>0);e=c[H>>2]|0}if(!e){d=0.0;b=0.0}else{f=z+4|0;h=y+4|0;m=a+68|0;n=A+4|0;o=B+4|0;p=D+4|0;q=C+4|0;v=x+4|0;w=0;d=0.0;b=0.0;do{J=c[E>>2]|0;e=c[J+(w<<3)+4>>2]|0;c[z>>2]=c[J+(w<<3)>>2];c[f>>2]=e;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];Ko(y,F);k=+g[y>>2];l=+g[h>>2];e=c[m>>2]|0;r=+g[e+(w<<3)>>2];s=+g[e+(w<<3)+4>>2];t=k*r-l*s;u=l*r+k*s;if((t!=t|0.0!=0.0)&(u!=u|0.0!=0.0)){ao(A,k,l,r,s);t=+g[A>>2];u=+g[n>>2]}e=c[H>>2]|0;J=e+w|0;K=c[E>>2]|0;k=+g[K+(J<<3)>>2];l=+g[K+(J<<3)+4>>2];r=t*k-u*l;s=u*k+t*l;if((r!=r|0.0!=0.0)&(s!=s|0.0!=0.0)){ao(B,t,u,k,l);e=c[H>>2]|0;u=+g[B>>2];t=+g[o>>2]}else{u=r;t=s}J=e+w|0;e=c[m>>2]|0;K=c[e+(J<<3)+4>>2]|0;c[D>>2]=c[e+(J<<3)>>2];c[p>>2]=K;c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];Ko(C,F);r=+g[C>>2];s=+g[q>>2];k=u*r-t*s;l=t*r+u*s;if((k!=k|0.0!=0.0)&(l!=l|0.0!=0.0)){ao(x,u,t,r,s);k=+g[x>>2];l=+g[v>>2]}d=d+k;b=b+l;w=w+1|0}while(w>>>0<(c[H>>2]|0)>>>0)}g[G>>2]=d;g[G+4>>2]=b;c[F>>2]=c[G>>2];c[F+4>>2]=c[G+4>>2];u=+Bo(F);Fj(c[a+108>>2]|0,u/+((c[H>>2]|0)>>>0));c[a+104>>2]=3;i=I;return}function qj(a){a=a|0;var b=0,d=0.0,e=0.0,f=0,h=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;G=i;i=i+96|0;if((i|0)>=(j|0))ba();y=G+80|0;b=G+64|0;q=G+72|0;s=G+56|0;u=G+48|0;v=G+40|0;w=G+32|0;x=G+24|0;B=G+16|0;D=G+8|0;F=G;C=a+124|0;E=(c[C>>2]|0)+-1|0;c[C>>2]=E;if(E|0){i=G;return}z=a+128|0;c[z>>2]=(c[z>>2]|0)+1;sk(c[a+60>>2]|0,b);A=a+8|0;E=a+92|0;rj(a,(c[b>>2]|0)+(c[A>>2]<<3)|0,c[E>>2]|0);b=c[a>>2]|0;if(!b){e=0.0;d=0.0}else{h=s+4|0;k=q+4|0;p=u+4|0;e=0.0;d=0.0;f=0;do{H=f;f=f+1|0;b=(f>>>0)%(b>>>0)|0;I=c[E>>2]|0;n=+g[I+(b<<3)>>2];o=+g[I+(b<<3)+4>>2];b=c[I+(H<<3)+4>>2]|0;c[s>>2]=c[I+(H<<3)>>2];c[h>>2]=b;c[y>>2]=c[s>>2];c[y+4>>2]=c[s+4>>2];Ko(q,y);r=+g[q>>2];t=+g[k>>2];l=n*r-o*t;m=o*r+n*t;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(u,n,o,r,t);l=+g[u>>2];m=+g[p>>2]}e=e+l;d=d+m;b=c[a>>2]|0}while(f>>>0>>0)}_n(v,e,d,+((c[a+32>>2]|0)>>>0),0.0);l=+g[a+80>>2];o=+g[v>>2]*l;l=+g[v+4>>2]*l;b=a+132|0;n=+((c[b>>2]|0)>>>0)*2.0*3.141592653589793/+((c[a>>2]|0)>>>0);m=+R(+n);n=+Q(+n)+m*0.0;e=o*n-l*m;d=o*m+l*n;if((e!=e|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(w,o,l,n,m);e=+g[w>>2];d=+g[w+4>>2]}g[x>>2]=e;g[x+4>>2]=d;c[y>>2]=c[x>>2];c[y+4>>2]=c[x+4>>2];t=+wo(y);f=a+156|0;if(t>+g[f>>2]?(g[B>>2]=e,g[B+4>>2]=d,c[y>>2]=c[B>>2],c[y+4>>2]=c[B+4>>2],+N(+(+Bo(y)))<.3141592700403172):0){c[a+104>>2]=4;I=c[a>>2]|0;c[C>>2]=(c[A>>2]|0)+I+(c[b>>2]|0);c[z>>2]=0;s=a+20|0;b=c[s>>2]|0;q=a+24|0;f=c[q>>2]|0;r=+(I>>>0)/+O(+(+((f+b|0)>>>0)));if(I){b=a+96|0;f=D+4|0;p=0;do{k=c[E>>2]|0;h=k+(p<<3)|0;k=k+(p<<3)+4|0;l=r*+g[k>>2];g[h>>2]=r*+g[h>>2];g[k>>2]=l;k=c[b>>2]|0;l=+g[k+(p<<3)>>2];m=+g[k+(p<<3)+4>>2];k=c[E>>2]|0;h=k+(p<<3)|0;n=+g[h>>2];k=k+(p<<3)+4|0;o=+g[k>>2];e=l*n-m*o;d=m*n+l*o;if((e!=e|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(D,n,o,l,m);e=+g[D>>2];d=+g[f>>2]}g[h>>2]=e;g[k>>2]=d;p=p+1|0}while(p>>>0<(c[a>>2]|0)>>>0);f=c[q>>2]|0;b=c[s>>2]|0}I=f+b|0;sj(a,I>>>0<5?I+-1|0:4);if(c[a>>2]|0){b=a+96|0;f=F+4|0;h=a+100|0;k=0;do{I=c[b>>2]|0;H=c[E>>2]|0;_n(F,+g[I+(k<<3)>>2],+g[I+(k<<3)+4>>2],+g[H+(k<<3)>>2],+g[H+(k<<3)+4>>2]);H=c[f>>2]|0;I=c[h>>2]|0;c[I+(k<<3)>>2]=c[F>>2];c[I+(k<<3)+4>>2]=H;k=k+1|0}while(k>>>0<(c[a>>2]|0)>>>0)}}else{if((c[z>>2]|0)==16){Dj(c[a+108>>2]|0);Vj(c[a+112>>2]|0);b=a+136|0;I=a+116|0;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;b=c[a>>2]|0;if(b>>>0>44){d=.3499999940395355;e=.30000001192092896}else{e=+((44-b|0)>>>0)*.009999999776482582;d=e+.3499999940395355;e=e+.30000001192092896}g[a+152>>2]=d;g[f>>2]=e;c[a+104>>2]=0}c[C>>2]=c[a+4>>2]}i=G;return}function rj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+32|0;if((i|0)>=(j|0))ba();x=B+24|0;y=B+16|0;z=B+8|0;A=B;gq(c[b+56>>2]|0,d|0,c[b>>2]<<3|0)|0;el(c[b+48>>2]|0);p=+O(+(+((c[b+32>>2]|0)>>>0)));w=c[b>>2]|0;p=p/+(w>>>0);if(!w){i=B;return}q=b+12|0;r=b+52|0;s=b+72|0;t=z+4|0;u=y+4|0;v=A+4|0;w=0;do{if(!(a[(c[q>>2]|0)+w>>0]|0)){k=e+(w<<3)|0;d=e+(w<<3)+4|0;g[k>>2]=0.0;g[d>>2]=0.0;h=0.0;f=0.0}else{d=c[r>>2]|0;l=+g[d+(w<<3)>>2];m=+g[d+(w<<3)+4>>2];d=c[s>>2]|0;k=c[d+(w<<3)+4>>2]|0;c[z>>2]=c[d+(w<<3)>>2];c[t>>2]=k;c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];Ko(y,x);n=+g[y>>2];o=+g[u>>2];h=l*n-m*o;f=m*n+l*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(A,l,m,n,o);h=+g[A>>2];f=+g[v>>2]}k=e+(w<<3)|0;d=e+(w<<3)+4|0;g[k>>2]=h;g[d>>2]=f}g[k>>2]=p*h;g[d>>2]=p*f;w=w+1|0}while(w>>>0<(c[b>>2]|0)>>>0);i=B;return}function sj(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=i;i=i+32|0;if((i|0)>=(j|0))ba();t=F+16|0;u=F+8|0;v=F;if(!(c[b+168>>2]|0))E=b;else{gq(c[b+188>>2]|0,c[b+92>>2]|0,c[b>>2]<<3|0)|0;E=b}A=(c[b+24>>2]|0)+(c[b+20>>2]|0)|0;x=A+-1|0;d=x>>>0>>0?x:d;x=i;i=i+((1*(A<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();y=i;i=i+((1*(A<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();z=i;i=i+((1*(A<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();B=(d>>>0>10?10:d)+1|0;C=i;i=i+((1*(B<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();D=i;i=i+((1*(B<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();d=c[E>>2]|0;a:do if(!d)w=0;else{o=b+4|0;p=b+12|0;q=b+92|0;r=u+4|0;s=v+4|0;n=0;k=0;while(1){l=c[o>>2]|0;m=((l+n|0)>>>0)%(d>>>0)|0;if(a[(c[p>>2]|0)+m>>0]|0){if((k|0)==(A|0))break;f=+(m>>>0);h=+(d>>>0);g[x+(k<<2)>>2]=(m>>>0>l>>>0?f-h:f)/h;d=c[q>>2]|0;l=c[d+(m<<3)+4>>2]|0;c[u>>2]=c[d+(m<<3)>>2];c[r>>2]=l;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];g[y+(k<<2)>>2]=+wo(t);l=c[q>>2]|0;d=c[l+(m<<3)+4>>2]|0;c[v>>2]=c[l+(m<<3)>>2];c[s>>2]=d;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];g[z+(k<<2)>>2]=+Bo(t);d=c[E>>2]|0;k=k+1|0}n=n+1|0;if(n>>>0>=d>>>0){w=k;break a}}Qp(37097,71,1,c[2348]|0)|0;kb(1)}while(0);if((w|0)!=(A|0)){Qp(37097,71,1,c[2348]|0)|0;kb(1)}if(A>>>0>1){f=+g[z>>2];l=1;while(1){k=z+(l<<2)|0;e=+g[k>>2];d=z+(l+-1<<2)|0;if(e-f>3.141592653589793){do e=e+-6.283185307179586;while(e-f>3.141592653589793);g[k>>2]=e}f=+g[d>>2];if(e-f<-3.141592653589793){do e=e+6.283185307179586;while(e-f<-3.141592653589793);g[k>>2]=e}l=l+1|0;if((l|0)==(A|0))break;else f=e}}Nh(x,y,A,C,B);Nh(x,z,A,D,B);d=c[E>>2]|0;if(!d){i=F;return}m=b+4|0;n=b+12|0;l=b+92|0;k=0;do{f=+(k>>>0);e=+(d>>>0);e=(k>>>0>(c[m>>2]|0)>>>0?f-e:f)/e;f=+Mh(C,B,e);e=+Mh(D,B,e);if(!(a[(c[n>>2]|0)+k>>0]|0)){h=0.0;e=0.0}else{G=+R(+e);h=f*(+Q(+e)+G*0.0);e=f*G}d=c[l>>2]|0;g[d+(k<<3)>>2]=h;g[d+(k<<3)+4>>2]=e;k=k+1|0;d=c[E>>2]|0}while(k>>>0>>0);i=F;return}function tj(b){b=b|0;var d=0,e=0.0,f=0.0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();o=s+16|0;d=s+8|0;p=s;q=b+124|0;r=(c[q>>2]|0)+-1|0;c[q>>2]=r;if(r|0){i=s;return}sk(c[b+60>>2]|0,d);r=b+8|0;gq(c[b+56>>2]|0,(c[d>>2]|0)+((c[r>>2]|0)-(c[b+132>>2]|0)<<3)|0,c[b>>2]<<3|0)|0;el(c[b+48>>2]|0);uj(b);if(c[b+168>>2]|0?(h=c[b>>2]|0,h|0):0){k=b+12|0;l=b+184|0;m=b+52|0;n=p+4|0;d=0;do{if((a[(c[k>>2]|0)+d>>0]|0)==2){h=c[l>>2]|0;u=c[m>>2]|0;t=c[u+(d<<3)+4>>2]|0;c[p>>2]=c[u+(d<<3)>>2];c[n>>2]=t;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];tk(h,o);h=c[b>>2]|0}d=d+1|0}while(d>>>0>>0)}d=c[b+160>>2]|0;if(d|0?vb[d&7](c[b+52>>2]|0,c[b+12>>2]|0,c[b>>2]|0,c[b+164>>2]|0)|0:0){Dj(c[b+108>>2]|0);Vj(c[b+112>>2]|0);d=b+136|0;u=b+116|0;c[u>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;d=c[b>>2]|0;if(d>>>0>44){e=.3499999940395355;f=.30000001192092896}else{f=+((44-d|0)>>>0)*.009999999776482582;e=f+.3499999940395355;f=f+.30000001192092896}g[b+152>>2]=e;g[b+156>>2]=f;c[b+104>>2]=0}c[q>>2]=(c[r>>2]|0)+(c[b>>2]|0);i=s;return}function uj(b){b=b|0;var d=0,e=0,f=0.0,h=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;K=i;i=i+64|0;if((i|0)>=(j|0))ba();z=K+56|0;l=K+48|0;J=K+40|0;A=K+32|0;B=K+24|0;C=K+16|0;D=K+8|0;I=K;if(!(c[b>>2]|0))e=0;else{r=b+100|0;s=b+52|0;q=l+4|0;t=0;do{e=c[r>>2]|0;m=+g[e+(t<<3)>>2];n=+g[e+(t<<3)+4>>2];e=c[s>>2]|0;d=e+(t<<3)|0;o=+g[d>>2];e=e+(t<<3)+4|0;p=+g[e>>2];h=m*o-n*p;f=n*o+m*p;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(l,o,p,m,n);h=+g[l>>2];f=+g[q>>2]}g[d>>2]=h;g[e>>2]=f;t=t+1|0;d=c[b>>2]|0}while(t>>>0>>0);e=d}F=b+20|0;d=c[F>>2]|0;G=i;i=i+((1*(d<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();H=i;i=i+((1*(d<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();do if(!e){q=d;d=0}else{r=b+4|0;s=b+12|0;t=b+112|0;u=b+52|0;v=B+4|0;w=A+4|0;x=C+4|0;y=D+4|0;q=0;d=0;while(1){l=(((c[r>>2]|0)+q|0)>>>0)%(e>>>0)|0;if((a[(c[s>>2]|0)+l>>0]|0)==1){if((d|0)==(c[F>>2]|0))break;e=(Tj(c[t>>2]|0)|0)!=0;f=+(l>>>0);if(l>>>0>(c[r>>2]|0)>>>0)f=f-+((c[b>>2]|0)>>>0);g[G+(d<<2)>>2]=f;L=c[u>>2]|0;p=+g[L+(l<<3)>>2];o=+g[L+(l<<3)+4>>2];g[B>>2]=e?1.0:-1.0;g[v>>2]=0.0;c[z>>2]=c[B>>2];c[z+4>>2]=c[B+4>>2];Ko(A,z);m=+g[A>>2];n=+g[w>>2];h=p*m-o*n;f=o*m+p*n;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(C,p,o,m,n);h=+g[C>>2];f=+g[x>>2]}g[D>>2]=h;g[y>>2]=f;c[z>>2]=c[D>>2];c[z+4>>2]=c[D+4>>2];g[H+(d<<2)>>2]=+Bo(z);e=c[b>>2]|0;d=d+1|0}q=q+1|0;if(q>>>0>=e>>>0){E=17;break}}if((E|0)==17){q=c[F>>2]|0;break}Qp(37169,61,1,c[2348]|0)|0;i=K;return}while(0);if((d|0)!=(q|0)){Qp(37169,61,1,c[2348]|0)|0;i=K;return}if(q>>>0>1){h=+g[H>>2];l=1;while(1){e=H+(l<<2)|0;f=+g[e>>2];d=H+(l+-1<<2)|0;if(f-h>3.141592653589793){do f=f+-6.283185307179586;while(f-h>3.141592653589793);g[e>>2]=f}h=+g[d>>2];if(f-h<-3.141592653589793){do f=f+6.283185307179586;while(f-h<-3.141592653589793);g[e>>2]=f}l=l+1|0;if(l>>>0>=q>>>0)break;else h=f}}Nh(G,H,q,J,2);d=J+4|0;L=b+120|0;p=+g[d>>2]*.30000001192092896+ +g[L>>2]*.699999988079071;g[d>>2]=p;g[L>>2]=p;if(c[b+168>>2]|0){gq(c[b+192>>2]|0,G|0,c[F>>2]<<2|0)|0;gq(c[b+196>>2]|0,H|0,c[F>>2]<<2|0)|0;c[b+200>>2]=c[d>>2];L=c[J>>2]|0;c[b+204>>2]=L;ok(c[b+208>>2]|0,(c[k>>2]=L,+g[k>>2]));ok(c[b+212>>2]|0,+g[d>>2])}d=c[b>>2]|0;if(d|0){q=b+12|0;r=b+52|0;s=b+4|0;t=I+4|0;l=0;do{if(!(a[(c[q>>2]|0)+l>>0]|0)){L=c[r>>2]|0;g[L+(l<<3)>>2]=0.0;g[L+(l<<3)+4>>2]=0.0}else{n=+(l>>>0);n=+Mh(J,2,l>>>0>(c[s>>2]|0)>>>0?n-+(d>>>0):n);m=+R(+-n);n=+Q(+n)+m*0.0;e=c[r>>2]|0;d=e+(l<<3)|0;o=+g[d>>2];e=e+(l<<3)+4|0;p=+g[e>>2];h=o*n-m*p;f=m*o+n*p;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(I,o,p,n,m);h=+g[I>>2];f=+g[t>>2]}g[d>>2]=h;g[e>>2]=f}l=l+1|0;d=c[b>>2]|0}while(l>>>0>>0)}l=b+128|0;if(!(c[l>>2]|0)){d=b+116|0;e=1}else{d=b+116|0;f=+g[J>>2]-+g[d>>2];h=f;if(h>3.141592653589793)do{f=h+-.6366197723675814;h=f}while(h>3.141592653589793);h=f;if(h<-3.141592653589793)do{f=h+.6366197723675814;h=f}while(h<-3.141592653589793);Gj(c[b+108>>2]|0,f*1.0000000474974513e-03);e=(c[l>>2]|0)+1|0}c[d>>2]=c[J>>2];c[l>>2]=e;i=K;return}function vj(a){a=a|0;return +(+xp(+g[a+80>>2])*-10.0)}function wj(a){a=a|0;return +(+Jj(c[a+108>>2]|0))}function xj(a){a=a|0;var b=0,d=0;b=a+172|0;if(c[b>>2]|0)return;c[a+176>>2]=qk(2048)|0;c[a+180>>2]=lk(2048)|0;c[a+184>>2]=qk(2048)|0;c[a+188>>2]=Xp(c[a>>2]<<3)|0;d=c[a+20>>2]<<2;c[a+192>>2]=Xp(d)|0;c[a+196>>2]=Xp(d)|0;c[a+208>>2]=lk(2048)|0;c[a+212>>2]=lk(2048)|0;c[a+168>>2]=1;c[b>>2]=1;return} -function yb(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;if((i|0)>=(j|0))ba();return b|0}function zb(){return i|0}function Ab(a){a=a|0;i=a}function Bb(a,b){a=a|0;b=b|0;i=a;j=b}function Cb(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function Db(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Eb(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Fb(a){a=a|0;C=a}function Gb(){return C|0}function Hb(a){a=a|0;return c[a+120>>2]|0}function Ib(b,d){b=b|0;d=+d;var e=0,f=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();k=n;m=Xp(388)|0;e=m;f=b;h=e+84|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(h|0));switch(c[m+56>>2]|0){case 0:{e=Bc(b)|0;f=b+4|0;h=Rg(c[b>>2]|0,c[f>>2]|0,c[b+8>>2]|0,e,1,m)|0;Xg(h,0);if(a[b+80>>0]|0)ah(h);Zg(h,1);_g(h,1);if(a[b+60>>0]|0){c[k>>2]=c[b+64>>2];c[k+4>>2]=c[b+68>>2];c[k+8>>2]=c[b+72>>2];c[k+12>>2]=c[b+76>>2];Wg(h,k)}l=(c[f>>2]|0)+(c[b>>2]|0)|0;c[m+92>>2]=Xp(l<<3)|0;c[m+96>>2]=l;Yp(e);c[m+84>>2]=h;break}case 1:{e=Vf(1,m)|0;Xf(e,0);if(a[b+80>>0]|0)fg(e);Zf(e,1);_f(e,1);if(a[b+60>>0]|0){c[k>>2]=c[b+64>>2];c[k+4>>2]=c[b+68>>2];c[k+8>>2]=c[b+72>>2];c[k+12>>2]=c[b+76>>2];Wf(e,k)|0}c[m+92>>2]=Xp(2048)|0;c[m+96>>2]=256;c[m+84>>2]=e;break}case 2:{e=rg(1,m)|0;sg(e,0);if(a[b+80>>0]|0)Bg(e);c[m+92>>2]=Xp(2048)|0;c[m+96>>2]=256;c[m+84>>2]=e;break}default:{}}e=pc(b+20|0)|0;f=m+88|0;c[f>>2]=e;c[m+100>>2]=0;h=m+104|0;g[h>>2]=1.0;l=m+112|0;c[l>>2]=0;k=m+108|0;c[k>>2]=0;if(d!=44100.0){d=44100.0/d;c[k>>2]=ve(d,c[b+40>>2]|0,+g[b+44>>2],+g[b+48>>2],c[b+52>>2]|0)|0;g[h>>2]=d;e=c[f>>2]|0}c[l>>2]=Xp(_(c[m+96>>2]<<2,c[e+4>>2]|0)|0)|0;c[m+116>>2]=0;c[m+120>>2]=0;c[m+124>>2]=dc(65536)|0;c[m+132>>2]=0;c[m+128>>2]=0;a[m+384>>0]=0;c[m+316>>2]=0;c[m+348>>2]=0;c[m+320>>2]=0;c[m+352>>2]=0;c[m+324>>2]=0;c[m+356>>2]=0;c[m+328>>2]=0;c[m+360>>2]=0;c[m+332>>2]=0;c[m+364>>2]=0;c[m+336>>2]=0;c[m+368>>2]=0;c[m+340>>2]=0;c[m+372>>2]=0;c[m+344>>2]=0;c[m+376>>2]=0;c[m+136>>2]=0;c[m+140>>2]=0;c[m+148>>2]=0;i=n;return m|0}function Jb(b){b=b|0;var d=0,e=0;a[b+384>>0]=1;d=b+316|0;e=d+68|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[b+136>>2]=dc(65536)|0;c[b+140>>2]=0;c[b+144>>2]=0;e=Xp(20)|0;c[b+148>>2]=e;c[e>>2]=0;c[b+152>>2]=0;return}function Kb(b){b=b|0;var d=0,e=0,f=0;a[b+384>>0]=0;d=b+316|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+348>>2]=0}d=b+320|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+352>>2]=0}d=b+324|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+356>>2]=0}d=b+328|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+360>>2]=0}d=b+332|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+364>>2]=0}d=b+336|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+368>>2]=0}d=b+340|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+372>>2]=0}d=b+344|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+376>>2]=0}c[b+380>>2]=0;e=b+136|0;d=c[e>>2]|0;if(d|0){ec(d);c[e>>2]=0}d=b+140|0;e=c[d>>2]|0;if(e|0){Yp(e);c[d>>2]=0;c[b+144>>2]=0}f=b+148|0;d=c[f>>2]|0;if(!d)return;e=c[d>>2]|0;if(e){Yp(e);d=c[f>>2]|0}Yp(d);c[f>>2]=0;c[b+152>>2]=0;return}function Lb(a,b){a=a|0;b=b|0;c[b>>2]=c[a+380>>2];return a+156|0}function Mb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=a+124|0;lc(c[e>>2]|0);a=jc(c[e>>2]|0,f,4)|0;a:do if(!a)a=0;else{if((a|0)>=0){a=c[f>>2]|0;a=a>>>0>>0?a:d;b=(jc(c[e>>2]|0,b,a)|0)<0;d=c[e>>2]|0;if(b){mc(d);cc(9);a=-1;break}else{kc(d,(c[f>>2]|0)-a|0);mc(c[e>>2]|0);break}}mc(c[e>>2]|0);switch(a|0){case -1:{cc(7);a=-1;break a}case -2:{cc(8);a=-1;break a}default:{cc(9);a=-1;break a}}}while(0);i=g;return a|0}function Nb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=i;i=i+80|0;if((i|0)>=(j|0))ba();z=A+16|0;y=A+8|0;x=A;v=A+24|0;w=A+20|0;if(!b){i=A;return}t=b+88|0;u=_(c[(c[t>>2]|0)+4>>2]|0,c[b+96>>2]|0)|0;if(a[b+384>>0]|0)c[b+380>>2]=0;if(!e){i=A;return}l=b+108|0;m=b+116|0;n=b+112|0;o=b+92|0;p=b+56|0;q=b+84|0;r=b+80|0;s=b+100|0;h=b+84|0;k=0;do{b=c[l>>2]|0;if(!b){b=c[m>>2]|0;f=b+(e-k)|0;f=f>>>0>>0?f:u;gq((c[n>>2]|0)+(b<<2)|0,d+(k<<2)|0,f-b<<2|0)|0;b=f-(c[m>>2]|0)|0}else{f=c[m>>2]|0;xe(b,d+(k<<2)|0,e-k|0,v,(c[n>>2]|0)+(f<<2)|0,u-f|0,w)|0;b=c[v>>2]|0;f=(c[m>>2]|0)+(c[w>>2]|0)|0}k=b+k|0;B=c[t>>2]|0;g=(f>>>0)%((c[B+4>>2]|0)>>>0)|0;b=f-g|0;f=qc(B,c[n>>2]|0,b,c[o>>2]|0)|0;if(g|0){B=c[n>>2]|0;gq(B|0,B+(b<<2)|0,g<<2|0)|0}c[m>>2]=g;switch(c[p>>2]|0){case 0:{$g(c[q>>2]|0,c[o>>2]|0,f);if(a[r>>0]|0){c[x>>2]=c[s>>2];Oo(v,10366,x)|0;bh(c[q>>2]|0,v);c[s>>2]=(c[s>>2]|0)+1}break}case 1:{$f(c[h>>2]|0,c[o>>2]|0,f);if(a[r>>0]|0){c[y>>2]=c[s>>2];Oo(v,10366,y)|0;gg(c[h>>2]|0,v);c[s>>2]=(c[s>>2]|0)+1}break}case 2:{ug(c[h>>2]|0,c[o>>2]|0,f);if(a[r>>0]|0){c[z>>2]=c[s>>2];Oo(v,10366,z)|0;Cg(c[h>>2]|0,v);c[s>>2]=(c[s>>2]|0)+1}break}default:{}}}while(k>>>0>>0);i=A;return}function Ob(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;if(!a){i=m;return}d=c[a+108>>2]|0;if(!d){b=a+116|0;l=0}else{o=c[a+40>>2]|0;k=Zp(o,4)|0;f=a+88|0;n=_(c[(c[f>>2]|0)+4>>2]|0,c[a+96>>2]|0)|0;h=a+112|0;b=a+116|0;e=c[b>>2]|0;xe(d,k,o,m+4|0,(c[h>>2]|0)+(e<<2)|0,n-e|0,l)|0;d=(c[l>>2]|0)+(c[b>>2]|0)|0;c[l>>2]=d;f=c[f>>2]|0;e=(d>>>0)%((c[f+4>>2]|0)>>>0)|0;if(!e)e=0;else{d=d-e|0;c[l>>2]=d}d=qc(f,c[h>>2]|0,d,c[a+92>>2]|0)|0;if(e|0){o=c[h>>2]|0;gq(o|0,o+(c[l>>2]<<2)|0,e<<2|0)|0}c[b>>2]=e;Yp(k);l=d}e=c[b>>2]|0;k=a+88|0;if(!e){h=a+92|0;b=l}else{b=c[k>>2]|0;d=c[b+4>>2]|0;f=a+112|0;if((d|0)==(e|0))d=e;else{eq(c[f>>2]|0,0,d-e<<2|0)|0;d=c[k>>2]|0;b=d;d=c[d+4>>2]|0}o=a+92|0;h=o;b=(qc(b,c[f>>2]|0,d,(c[o>>2]|0)+(l<<3)|0)|0)+l|0}b=(rc(c[k>>2]|0,(c[h>>2]|0)+(b<<3)|0)|0)+b|0;switch(c[a+56>>2]|0){case 0:{$g(c[a+84>>2]|0,c[h>>2]|0,b);i=m;return}case 1:{d=0;e=b;while(1){o=d+e|0;n=c[h>>2]|0;g[n+(o<<3)>>2]=0.0;g[n+(o<<3)+4>>2]=0.0;d=d+1|0;if((d|0)==60)break;else e=e+1|0}$f(c[a+84>>2]|0,c[h>>2]|0,b+60|0);i=m;return}case 2:{ug(c[a+84>>2]|0,c[h>>2]|0,b);i=m;return}default:{i=m;return}}}function Pb(a){a=a|0;var b=0,d=0,e=0;if(!a)return;switch(c[a+56>>2]|0){case 0:{Yg(c[a+84>>2]|0);break}case 1:{Yf(c[a+84>>2]|0);break}case 2:{tg(c[a+84>>2]|0);break}default:{}}b=c[a+108>>2]|0;if(b|0)we(b);b=c[a+112>>2]|0;if(b|0)Yp(b);b=c[a+316>>2]|0;if(b|0)Yp(b);b=c[a+320>>2]|0;if(b|0)Yp(b);b=c[a+324>>2]|0;if(b|0)Yp(b);b=c[a+328>>2]|0;if(b|0)Yp(b);b=c[a+332>>2]|0;if(b|0)Yp(b);b=c[a+336>>2]|0;if(b|0)Yp(b);b=c[a+340>>2]|0;if(b|0)Yp(b);b=c[a+344>>2]|0;if(b|0)Yp(b);ec(c[a+124>>2]|0);b=c[a+136>>2]|0;if(b|0)ec(b);b=c[a+140>>2]|0;if(b|0)Yp(b);d=a+148|0;b=c[d>>2]|0;if(b|0){e=c[b>>2]|0;if(e){Yp(e);b=c[d>>2]|0}Yp(b)}b=c[a+128>>2]|0;if(b|0)Yp(b);sc(c[a+88>>2]|0);Yp(c[a+92>>2]|0);Yp(a);return}function Qb(b,d,e,f,g,h,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+64|0;if((i|0)>=(j|0))ba();o=s+48|0;q=s+44|0;p=s+40|0;r=s;if(!d){f=1;i=s;return f|0}if(!k){f=0;i=s;return f|0}if(a[k+384>>0]|0){l=r;b=h;d=l+40|0;do{c[l>>2]=c[b>>2];l=l+4|0;b=b+4|0}while((l|0)<(d|0));c[o>>2]=g;m=k+380|0;n=c[m>>2]|0;if(n>>>0<8){h=k+316+(n<<2)|0;b=k+348+(n<<2)|0;d=c[r+16>>2]|0;if((c[b>>2]|0)>>>0>>0){c[h>>2]=_p(c[h>>2]|0,d<<3)|0;c[b>>2]=d}if(!d)b=c[h>>2]|0;else{l=c[r+12>>2]|0;b=c[h>>2]|0;h=0;do{c[b+(h<<3)>>2]=c[l+(h<<3)>>2];c[b+(h<<3)+4>>2]=c[l+(h<<3)+4>>2];h=h+1|0}while((h|0)!=(d|0))}c[k+156+(n*20|0)>>2]=b;c[k+156+(n*20|0)+4>>2]=d;c[k+156+(n*20|0)+8>>2]=c[r>>2];c[k+156+(n*20|0)+12>>2]=c[r+4>>2];a[k+156+(n*20|0)+16>>0]=(g|0)!=0&1;c[m>>2]=(c[m>>2]|0)+1}else d=c[r+16>>2]|0;b=d<<3;n=b+20|0;h=k+136|0;nc(c[h>>2]|0);if((gc(c[h>>2]|0,n)|0)==(n|0)){c[q>>2]=b+16;hc(c[h>>2]|0,q,4)|0;c[p>>2]=d;hc(c[h>>2]|0,p,4)|0;hc(c[h>>2]|0,c[r+12>>2]|0,b)|0;hc(c[h>>2]|0,r+4|0,4)|0;hc(c[h>>2]|0,r,4)|0;hc(c[h>>2]|0,o,4)|0;ic(c[h>>2]|0)|0;oc(c[h>>2]|0)}}if(!g){f=k+120|0;c[f>>2]=(c[f>>2]|0)+1;f=1;i=s;return f|0}l=f+4|0;b=k+132|0;h=k+128|0;if(l>>>0>(c[b>>2]|0)>>>0){g=_p(c[h>>2]|0,l)|0;c[h>>2]=g;c[b>>2]=l;d=h;b=g}else{d=h;b=c[h>>2]|0}a[b>>0]=f;a[b+1>>0]=f>>8;a[b+2>>0]=f>>16;a[b+3>>0]=f>>24;fq((c[d>>2]|0)+4|0,e|0,f|0)|0;f=k+124|0;nc(c[f>>2]|0);fc(c[f>>2]|0,c[d>>2]|0,l)|0;oc(c[f>>2]|0);f=0;i=s;return f|0}function Rb(b,d){b=b|0;d=+d;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0.0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();k=o+16|0;l=o;m=b+20|0;p=+g[b+40>>2];if(p<0.0|p>.5){cc(2);b=0;i=o;return b|0}n=Xp(176)|0;e=n;f=b;h=e+108|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(h|0));switch(c[n+64>>2]|0){case 0:{c[k>>2]=c[b+68>>2];c[k+4>>2]=c[b+72>>2];c[k+8>>2]=c[b+76>>2];c[k+12>>2]=c[b+80>>2];f=Bc(b)|0;h=b+4|0;e=Dg(c[b>>2]|0,c[h>>2]|0,c[b+8>>2]|0,f,k)|0;Fg(e,0);if(a[b+84>>0]|0){c[l>>2]=c[b+88>>2];c[l+4>>2]=c[b+92>>2];c[l+8>>2]=c[b+96>>2];c[l+12>>2]=c[b+100>>2];Eg(e,l)}k=(c[h>>2]|0)+(c[b>>2]|0)|0;c[n+120>>2]=Xp(k<<3)|0;l=n+124|0;c[l>>2]=k;Yp(f);c[n+108>>2]=e;e=l;break}case 1:{c[k>>2]=c[b+68>>2];c[k+4>>2]=c[b+72>>2];c[k+8>>2]=c[b+76>>2];c[k+12>>2]=c[b+80>>2];e=Jf(k)|0;Nf(e,0);if(a[b+84>>0]|0){c[l>>2]=c[b+88>>2];c[l+4>>2]=c[b+92>>2];c[l+8>>2]=c[b+96>>2];c[l+12>>2]=c[b+100>>2];Mf(e,l)|0}c[n+120>>2]=0;l=n+124|0;c[l>>2]=0;c[n+108>>2]=e;c[n+112>>2]=0;e=l;break}case 2:{l=hg()|0;ig(l,0);c[n+120>>2]=0;e=n+124|0;c[e>>2]=0;c[n+108>>2]=l;c[n+112>>2]=2;break}default:e=n+124|0}m=tc(m)|0;f=n+116|0;c[f>>2]=m;e=uc(m,c[e>>2]|0)|0;f=xc(c[f>>2]|0)|0;f=e>>>0>f>>>0?e:f;c[n+132>>2]=f;c[n+128>>2]=Xp(f<<2)|0;f=n+136|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;a[n+152>>0]=1;a[n+153>>0]=0;a[n+154>>0]=0;f=n+156|0;g[f>>2]=1.0;e=n+160|0;c[e>>2]=0;if(d!=44100.0){p=d/44100.0;c[e>>2]=ve(p,c[b+48>>2]|0,+g[b+52>>2],+g[b+56>>2],c[b+60>>2]|0)|0;g[f>>2]=p}c[n+164>>2]=dc(65536)|0;b=c[n+104>>2]|0;c[n+168>>2]=Xp(b+4|0)|0;c[n+172>>2]=Xp(b)|0;b=n;i=o;return b|0}function Sb(a){a=a|0;return c[a+104>>2]|0}function Tb(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0;a[b+154>>0]=1;j=+g[b+156>>2];d=~~(+Z(+(+(d>>>0)/j))+ +Z(+j))>>>0;d=d-(xc(c[b+116>>2]|0)|0)|0;if(c[b+160>>2]|0)d=d-(c[b+48>>2]|0)|0;i=b+104|0;h=(Ub(b,c[i>>2]|0)|0)>>>0>d>>>0;f=c[i>>2]|0;if(!h){b=f;return b|0}e=f>>>1;if(f>>>0>1){h=0;do{k=(Ub(b,e)|0)>>>0>d>>>0;f=k?e:f;h=k?h:e;k=f-h|0;e=(k>>>1)+h|0}while(k>>>0>1);d=e}else d=e;c[i>>2]=d;k=d;return k|0}function Ub(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;e=Zp(b,1)|0;switch(c[a+64>>2]|0){case 0:{g=a+108|0;Mg(c[g>>2]|0,d,e,b);b=Lg(c[g>>2]|0)|0;b=_(c[a+124>>2]|0,b)|0;Ig(c[g>>2]|0);break}case 1:{g=a+108|0;Sf(c[g>>2]|0,d,e,b);b=Rf(c[g>>2]|0)|0;Of(c[g>>2]|0);break}case 2:{g=a+108|0;ng(c[g>>2]|0,d,e,b,c[a+68>>2]|0,c[a+72>>2]|0,c[a+76>>2]|0);b=mg(c[g>>2]|0)|0;jg(c[g>>2]|0);break}default:b=0}Yp(e);g=uc(c[a+116>>2]|0,b)|0;i=f;return g|0}function Vb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;if((c[b+104>>2]|0)>>>0>>0){cc(6);e=-1;return e|0}f=b+168|0;g=c[f>>2]|0;a[g>>0]=e;a[g+1>>0]=e>>8;a[g+2>>0]=e>>16;a[g+3>>0]=e>>24;fq((c[f>>2]|0)+4|0,d|0,e|0)|0;b=b+164|0;nc(c[b>>2]|0);d=fc(c[b>>2]|0,c[f>>2]|0,e+4|0)|0;oc(c[b>>2]|0);if(!d){g=0;return g|0}if((d|0)>=0){g=d+-4|0;return g|0}switch(d|0){case -1:{cc(7);g=-1;return g|0}case -2:{cc(8);g=-1;return g|0}default:{cc(9);g=-1;return g|0}}return 0}function Wb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=i;i=i+16|0;if((i|0)>=(j|0))ba();O=Q+4|0;P=Q;if(!b){b=0;i=Q;return b|0}if(e|0){B=b+136|0;H=b+140|0;I=b+64|0;J=b+154|0;K=b+153|0;L=b+164|0;M=b+172|0;N=b+152|0;r=b+108|0;s=b+108|0;t=b+112|0;u=b+68|0;v=b+72|0;w=b+76|0;x=b+156|0;y=b+116|0;z=b+132|0;A=b+128|0;C=b+120|0;D=b+4|0;E=b+124|0;F=b+160|0;G=b+48|0;h=0;f=0;a:while(1){k=c[B>>2]|0;b:while(1){o=e-f|0;n=(f|0)>0;p=+(o>>>0);c:do if(!k)while(1){c[H>>2]=0;if(h){q=49;break a}switch(c[I>>2]|0){case 0:{k=Kg(c[r>>2]|0)|0;q=15;break}case 1:{k=Qf(c[s>>2]|0)|0;q=15;break}case 2:{k=lg(c[r>>2]|0)|0;q=15;break}default:q=16}if((q|0)==15?(q=0,(k|0)==0):0)q=16;if((q|0)==16){q=0;l=n&(a[J>>0]|0)!=0;if(a[K>>0]|0){o=0;n=l;break b}lc(c[L>>2]|0);k=jc(c[L>>2]|0,O,4)|0;m=c[L>>2]|0;if((k|0)<1){h=m;q=18;break b}jc(m,c[M>>2]|0,c[O>>2]|0)|0;mc(c[L>>2]|0);switch(c[I>>2]|0){case 0:{Mg(c[r>>2]|0,P,c[M>>2]|0,c[O>>2]|0);break}case 1:{Sf(c[s>>2]|0,P,c[M>>2]|0,c[O>>2]|0);c[t>>2]=Rf(c[s>>2]|0)|0;break}case 2:{jg(c[r>>2]|0);ng(c[r>>2]|0,P,c[M>>2]|0,c[O>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0);break}default:{}}a[N>>0]=0;if(l){o=1;n=1;break b}}q=~~+Z(+(p/+g[x>>2]))>>>0;k=vc(c[y>>2]|0,q)|0;k=(((q>>>0)%((c[(c[y>>2]|0)+4>>2]|0)>>>0)|0|0)!=0&1)+k|0;d:do switch(c[I>>2]|0){case 0:{k=(c[D>>2]|0)+(c[b>>2]|0)|0;Ng(c[r>>2]|0,c[C>>2]|0,k)|0;break}case 1:{q=c[t>>2]|0;k=q>>>0>>0?q:k;if(k>>>0>(c[E>>2]|0)>>>0){l=_p(c[C>>2]|0,k<<3)|0;c[C>>2]=l;c[E>>2]=k}else l=c[C>>2]|0;Tf(c[s>>2]|0,l,k)|0;c[t>>2]=(c[t>>2]|0)-k;break}case 2:{q=c[t>>2]|0;l=(k>>>0)%(q>>>0)|0;l=((l|0)==0?0:q-l|0)+k|0;if(l>>>0>(c[E>>2]|0)>>>0){c[C>>2]=_p(c[C>>2]|0,l<<3)|0;c[E>>2]=l}if(!l)k=0;else{k=0;do{if(og(c[r>>2]|0,(c[C>>2]|0)+(k<<3)|0)|0)break d;k=(c[t>>2]|0)+k|0}while(k>>>0>>0)}break}default:k=0}while(0);l=uc(c[y>>2]|0,k)|0;if(l>>>0>(c[z>>2]|0)>>>0){q=_p(c[A>>2]|0,l<<2)|0;c[A>>2]=q;c[z>>2]=l;l=q}else l=c[A>>2]|0;k=wc(c[y>>2]|0,c[C>>2]|0,k,l)|0;c[B>>2]=k;a[N>>0]=0;if(k|0)break c}while(0);l=c[F>>2]|0;if(!l){l=Cc((c[A>>2]|0)+(c[H>>2]<<2)|0,k,d,o)|0;c[H>>2]=(c[H>>2]|0)+l;k=(c[B>>2]|0)-l|0;c[B>>2]=k}else{xe(l,(c[A>>2]|0)+(c[H>>2]<<2)|0,k,O,d,o,P)|0;l=c[P>>2]|0;k=c[O>>2]|0;c[H>>2]=(c[H>>2]|0)+k;k=(c[B>>2]|0)-k|0;c[B>>2]=k}d=d+(l<<2)|0;f=l+f|0;if(f>>>0>=e>>>0){q=48;break a}}if((q|0)==18){q=0;mc(h);if(!k)a[K>>0]=1;o=0;n=l}if(a[N>>0]|0){e=f;break}m=yc(c[y>>2]|0,c[A>>2]|0)|0;c[B>>2]=m;if(c[F>>2]|0){h=c[G>>2]|0;if(!h)h=0;else{k=c[A>>2]|0;l=0;do{g[k+(m+l<<2)>>2]=0.0;l=l+1|0}while(l>>>0>>0)}c[B>>2]=m+h}zc(c[y>>2]|0);a[N>>0]=1;h=n&o;if(f>>>0>=e>>>0){q=48;break}}if((q|0)==48)if(h)q=49;else e=f;if((q|0)==49)if((f|0)!=(e|0))eq(d|0,0,e-f<<2|0)|0;if(e|0){b=e;i=Q;return b|0}}if(a[b+153>>0]|0){b=0;i=Q;return b|0}cc(7);b=-1;i=Q;return b|0}function Xb(a){a=a|0;var b=0;if(!a)return;switch(c[a+64>>2]|0){case 0:{Jg(c[a+108>>2]|0);break}case 1:{Pf(c[a+108>>2]|0);break}case 2:{kg(c[a+108>>2]|0);break}default:{}}b=c[a+160>>2]|0;if(b|0)we(b);Ac(c[a+116>>2]|0);Yp(c[a+120>>2]|0);Yp(c[a+128>>2]|0);ec(c[a+164>>2]|0);Yp(c[a+168>>2]|0);Yp(c[a+172>>2]|0);Yp(a);return}function Yb(b,d){b=b|0;d=d|0;var e=0.0,f=0,h=0,i=0,j=0;f=im(b,d)|0;if(!f){cc(4);i=0;return i|0}i=Zp(1,108)|0;if(!i){cc(1);i=0;return i|0}d=im(f,10383)|0;if(d|0)c[i+68>>2]=Dc(om(d)|0)|0;d=im(f,10399)|0;if(d|0)c[i+72>>2]=Jc(om(d)|0)|0;d=im(f,10416)|0;if(d|0)c[i+76>>2]=Jc(om(d)|0)|0;d=im(f,10433)|0;do if(d|0){d=om(d)|0;b=i+64|0;if(!(dp(d,10444)|0)){c[b>>2]=2;break}else{c[b>>2]=1;c[i+80>>2]=Si(d)|0;break}}while(0);b=im(f,10449)|0;if(b|0){a[i+84>>0]=1;d=im(b,10383)|0;if(d|0)c[i+88>>2]=Dc(om(d)|0)|0;d=im(b,10399)|0;if(d|0)c[i+92>>2]=Jc(om(d)|0)|0;d=im(b,10416)|0;if(d|0)c[i+96>>2]=Jc(om(d)|0)|0;d=im(b,10433)|0;if(d|0)c[i+100>>2]=Si(om(d)|0)|0}d=im(f,10456)|0;if(d|0){b=qm(d)|0;c[i+104>>2]=b}b=im(f,10469)|0;if(b|0){d=i+64|0;if((c[d>>2]|0)==2){Yp(i);cc(5);i=0;return i|0}c[d>>2]=0;d=im(b,10474)|0;if(d|0){d=qm(d)|0;c[i>>2]=d}d=im(b,10490)|0;if(d|0){d=qm(d)|0;c[i+4>>2]=d}d=im(b,10511)|0;if(d|0){d=qm(d)|0;c[i+8>>2]=d}d=im(b,10524)|0;if(d|0){d=qm(d)|0;c[i+12>>2]=d}d=im(b,10534)|0;if(d|0){b=qm(d)|0;c[i+16>>2]=b}}d=im(f,10545)|0;do if(d|0){b=im(d,10556)|0;if(b|0)g[i+36>>2]=+sm(b)/44100.0*3.141592653589793*2.0;d=im(d,10573)|0;if(d|0){e=+sm(d);if(!(e<0.0|e>.5)){g[i+40>>2]=e;break}Yp(i);cc(5);i=0;return i|0}}while(0);b=im(f,10578)|0;if(b){d=im(b,10592)|0;if(!d)c[i+20>>2]=1;else{d=om(d)|0;j=(dp(d,10444)|0)==0;c[i+20>>2]=_e(j?22050:d)|0}d=im(b,10598)|0;if(d|0){j=qm(d)|0;c[i+24>>2]=j}d=im(b,10617)|0;if(d|0){j=qm(d)|0;c[i+28>>2]=j}d=im(b,10630)|0;if(d|0)g[i+32>>2]=+sm(d)}else c[i+24>>2]=1;d=im(f,10647)|0;if(d|0?(h=im(d,10663)|0,h|0):0)g[i+44>>2]=+sm(h);b=im(f,10679)|0;if(!b){j=i;return j|0}d=im(b,10689)|0;if(d|0){j=qm(d)|0;c[i+48>>2]=j}d=im(b,10695)|0;if(d|0)g[i+52>>2]=+sm(d);d=im(b,10705)|0;if(d|0)g[i+56>>2]=+sm(d);d=im(b,10717)|0;if(!d){j=i;return j|0}c[i+60>>2]=~~+sm(d)>>>0;j=i;return j|0}function Zb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+256|0;if((i|0)>=(j|0))ba();e=Pl(a,0,f)|0;if(e){a=Yb(e,b)|0;b=e+4|0;d=c[b>>2]|0;if((d|0)!=-1?(d=d+-1|0,c[b>>2]=d,(d|0)==0):0)km(e)}else{cc(3);a=0}i=f;return a|0}function _b(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;f=im(b,d)|0;if(!f){cc(4);h=0;return h|0}h=Zp(1,84)|0;if(!h){cc(1);h=0;return h|0}d=im(f,10433)|0;if(d|0){b=(dp(om(d)|0,10444)|0)==0;c[h+56>>2]=b?2:1}b=im(f,10449)|0;if(b|0){a[h+60>>0]=1;d=im(b,10383)|0;if(d|0)c[h+64>>2]=Dc(om(d)|0)|0;d=im(b,10399)|0;if(d|0)c[h+68>>2]=Jc(om(d)|0)|0;d=im(b,10416)|0;if(d|0)c[h+72>>2]=Jc(om(d)|0)|0;d=im(b,10433)|0;if(d|0)c[h+76>>2]=Si(om(d)|0)|0}b=im(f,10469)|0;if(b|0){d=h+56|0;if((c[d>>2]|0)==2){Yp(h);cc(5);h=0;return h|0}c[d>>2]=0;d=im(b,10474)|0;if(d|0){d=qm(d)|0;c[h>>2]=d}d=im(b,10490)|0;if(d|0){d=qm(d)|0;c[h+4>>2]=d}d=im(b,10511)|0;if(d|0){d=qm(d)|0;c[h+8>>2]=d}d=im(b,10524)|0;if(d|0){d=qm(d)|0;c[h+12>>2]=d}d=im(b,10534)|0;if(d|0){b=qm(d)|0;c[h+16>>2]=b}}d=im(f,10545)|0;if(d|0?(e=im(d,10556)|0,e|0):0)g[h+36>>2]=+sm(e)/44100.0*3.141592653589793*2.0;b=im(f,10578)|0;if(b){d=im(b,10592)|0;if(!d)c[h+20>>2]=1;else{e=om(d)|0;d=(dp(e,10444)|0)==0;c[h+20>>2]=_e(d?22057:e)|0}d=im(b,10598)|0;if(d|0){e=qm(d)|0;c[h+24>>2]=e}d=im(b,10617)|0;if(d|0){e=qm(d)|0;c[h+28>>2]=e}d=im(b,10630)|0;if(d|0)g[h+32>>2]=+sm(d)}else c[h+24>>2]=1;b=im(f,10679)|0;if(!b)return h|0;d=im(b,10689)|0;if(d|0){f=qm(d)|0;c[h+40>>2]=f}d=im(b,10695)|0;if(d|0)g[h+44>>2]=+sm(d);d=im(b,10705)|0;if(d|0)g[h+48>>2]=+sm(d);d=im(b,10717)|0;if(!d)return h|0;c[h+52>>2]=~~+sm(d)>>>0;return h|0}function $b(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+256|0;if((i|0)>=(j|0))ba();e=Pl(a,0,f)|0;if(e){a=_b(e,b)|0;b=e+4|0;d=c[b>>2]|0;if((d|0)!=-1?(d=d+-1|0,c[b>>2]=d,(d|0)==0):0)km(e)}else{cc(3);a=0}i=f;return a|0}function ac(){Aa(45076,2)|0;return}function bc(a){a=a|0;Yp(a);return}function cc(a){a=a|0;var b=0;Va(45072,1)|0;b=Pa(c[11269]|0)|0;if(b|0){c[b>>2]=a;return}b=Xp(4)|0;Za(c[11269]|0,b|0)|0;c[b>>2]=a;return}function dc(b){b=b|0;var d=0;d=Xp(68)|0;c[d>>2]=b;b=Xp(b)|0;c[d+4>>2]=b;c[d+8>>2]=b;c[d+12>>2]=b;jb(d+16|0,0)|0;b=Xp(60)|0;a[b>>0]=0;Ia(b+12|0,0)|0;c[d+56>>2]=b;b=Xp(60)|0;a[b>>0]=0;Ia(b+12|0,0)|0;c[d+60>>2]=b;a[d+64>>0]=0;a[d+52>>0]=0;c[d+44>>2]=0;return d|0}function ec(a){a=a|0;Ja((c[a+56>>2]|0)+12|0)|0;Ja((c[a+60>>2]|0)+12|0)|0;Ta(a+16|0)|0;Yp(c[a+4>>2]|0);Yp(a);return}function fc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();r=t;q=b+60|0;f=c[q>>2]|0;h=(a[f>>0]|0)!=0;do if(h){g=f+4|0;f=f+8|0;if((c[g>>2]|0)==0?(c[f>>2]|0)==0:0){n=0;o=0;break}hb(r|0,0)|0;o=((c[r+4>>2]|0)*1e3|0)+(c[f>>2]|0)|0;s=(o|0)>1e9;n=(c[r>>2]|0)+(c[g>>2]|0)+(s&1)|0;o=s?o+-1e9|0:o}else{n=0;o=0}while(0);if(a[b+52>>0]|0){d=-3;i=t;return d|0}l=b+64|0;p=b+8|0;s=b+12|0;m=b+16|0;k=r+4|0;a:do if(!h){if(a[l>>0]|0){d=0;i=t;return d|0}h=c[s>>2]|0;f=c[p>>2]|0;if(f>>>0>>0)f=f+(c[b>>2]|0)|0;g=h;if((f|0)==(h|0))f=c[b>>2]|0;else f=f-g|0;if((f+-1|0)>>>0>>0){d=-1;i=t;return d|0}else f=g}else{b:do if(!(n|o)){while(1){if(a[l>>0]|0){f=0;break}h=c[s>>2]|0;f=c[p>>2]|0;if(f>>>0>>0)g=f+(c[b>>2]|0)|0;else g=f;f=h;if((g|0)==(h|0))g=c[b>>2]|0;else g=g-f|0;if((g+-1|0)>>>0>=e>>>0)break a;g=c[q>>2]|0;c[r>>2]=n;c[k>>2]=o;g=g+12|0;do f=za(g|0,m|0)|0;while((f|0)==4);if(f|0)break b}i=t;return f|0}else{while(1){if(a[l>>0]|0){f=0;break}h=c[s>>2]|0;f=c[p>>2]|0;if(f>>>0>>0)g=f+(c[b>>2]|0)|0;else g=f;f=h;if((g|0)==(h|0))g=c[b>>2]|0;else g=g-f|0;if((g+-1|0)>>>0>=e>>>0)break a;g=c[q>>2]|0;c[r>>2]=n;c[k>>2]=o;g=g+12|0;do f=bb(g|0,m|0,r|0)|0;while((f|0)==4);if(f|0)break b}i=t;return f|0}while(0);d=(c[(eo()|0)>>2]|0)==110;d=d?-2:-5;i=t;return d|0}while(0);g=b+4|0;q=c[b>>2]|0;r=(c[g>>2]|0)+q|0;f=(r>>>0>>0?r+q|0:r)-f|0;f=f>>>0>e>>>0?e:f;fq(h|0,d|0,f|0)|0;if(f>>>0>>0)fq(c[g>>2]|0,d+f|0,e-f|0)|0;r=h+e|0;d=c[b>>2]|0;c[s>>2]=r>>>0<((c[g>>2]|0)+d|0)>>>0?r:r+(0-d)|0;Ra((c[b+56>>2]|0)+12|0)|0;d=e;i=t;return d|0}function gc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();r=t;q=b+60|0;e=c[q>>2]|0;g=(a[e>>0]|0)!=0;do if(g){f=e+4|0;e=e+8|0;if((c[f>>2]|0)==0?(c[e>>2]|0)==0:0){n=0;o=0;break}hb(r|0,0)|0;o=((c[r+4>>2]|0)*1e3|0)+(c[e>>2]|0)|0;s=(o|0)>1e9;n=(c[r>>2]|0)+(c[f>>2]|0)+(s&1)|0;o=s?o+-1e9|0:o}else{n=0;o=0}while(0);s=b+52|0;if(a[s>>0]|0){b=-3;i=t;return b|0}k=b+64|0;p=b+8|0;l=b+12|0;m=b+16|0;h=r+4|0;a:do if(!g){if(a[k>>0]|0){b=0;i=t;return b|0}g=c[l>>2]|0;f=c[p>>2]|0;e=g;if(f>>>0>>0)f=f+(c[b>>2]|0)|0;if((f|0)==(g|0))f=c[b>>2]|0;else f=f-e|0;if((f+-1|0)>>>0>>0){b=-1;i=t;return b|0}}else{b:do if(!(n|o)){while(1){if(a[k>>0]|0){e=0;break}g=c[l>>2]|0;f=c[p>>2]|0;e=g;if(f>>>0>>0)f=f+(c[b>>2]|0)|0;if((f|0)==(g|0))f=c[b>>2]|0;else f=f-e|0;if((f+-1|0)>>>0>=d>>>0)break a;f=c[q>>2]|0;c[r>>2]=n;c[h>>2]=o;f=f+12|0;do e=za(f|0,m|0)|0;while((e|0)==4);if(e|0)break b}i=t;return e|0}else{while(1){if(a[k>>0]|0){e=0;break}g=c[l>>2]|0;f=c[p>>2]|0;e=g;if(f>>>0>>0)f=f+(c[b>>2]|0)|0;if((f|0)==(g|0))f=c[b>>2]|0;else f=f-e|0;if((f+-1|0)>>>0>=d>>>0)break a;f=c[q>>2]|0;c[r>>2]=n;c[h>>2]=o;f=f+12|0;do e=bb(f|0,m|0,r|0)|0;while((e|0)==4);if(e|0)break b}i=t;return e|0}while(0);b=(c[(eo()|0)>>2]|0)==110;b=b?-2:-5;i=t;return b|0}while(0);c[b+44>>2]=d;c[b+48>>2]=e;a[s>>0]=1;b=d;i=t;return b|0}function hc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(a[b+64>>0]|0){d=0;return d|0}g=b+44|0;if((c[g>>2]|0)>>>0>>0){d=-4;return d|0}h=b+48|0;j=c[h>>2]|0;i=b+4|0;k=c[b>>2]|0;f=(c[i>>2]|0)+k|0;f=(f>>>0>>0?f+k|0:f)-j|0;f=f>>>0>e>>>0?e:f;fq(j|0,d|0,f|0)|0;if(f>>>0>>0)fq(c[i>>2]|0,d+f|0,e-f|0)|0;j=(c[h>>2]|0)+e|0;k=c[b>>2]|0;c[h>>2]=j>>>0<((c[i>>2]|0)+k|0)>>>0?j:j+(0-k)|0;c[g>>2]=(c[g>>2]|0)-e;k=e;return k|0}function ic(b){b=b|0;var d=0;if(a[b+64>>0]|0){b=0;return b|0}d=b+52|0;if(!(a[d>>0]|0)){b=-4;return b|0}if(c[b+44>>2]|0){b=-4;return b|0}c[b+12>>2]=c[b+48>>2];a[d>>0]=0;Ra((c[b+56>>2]|0)+12|0)|0;b=0;return b|0}function jc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+16|0;if((i|0)>=(j|0))ba();t=x;s=b+56|0;f=c[s>>2]|0;h=(a[f>>0]|0)!=0;do if(h){g=f+4|0;f=f+8|0;if((c[g>>2]|0)==0?(c[f>>2]|0)==0:0){o=0;p=0;break}hb(t|0,0)|0;p=((c[t+4>>2]|0)*1e3|0)+(c[f>>2]|0)|0;w=(p|0)>1e9;o=(c[t>>2]|0)+(c[g>>2]|0)+(w&1)|0;p=w?p+-1e9|0:p}else{o=0;p=0}while(0);w=b+8|0;q=b+12|0;v=b+64|0;n=b+16|0;m=t+4|0;a:do if(h)if(!(o|p)){b:while(1){h=c[w>>2]|0;f=c[q>>2]|0;if(f>>>0>>0)g=f+(c[b>>2]|0)|0;else g=f;f=h;if((g-f|0)>>>0>=e>>>0)break a;f=(a[v>>0]|0)!=0;if(f){k=(f^1)<<31>>31;break}g=c[s>>2]|0;c[t>>2]=o;c[m>>2]=p;g=g+12|0;do f=za(g|0,n|0)|0;while((f|0)==4);switch(f|0){case 0:break;case 110:{k=-2;break b}default:{r=-5;u=30;break b}}}if((u|0)==30){i=x;return r|0}d=k;i=x;return d|0}else{c:while(1){h=c[w>>2]|0;f=c[q>>2]|0;if(f>>>0>>0)g=f+(c[b>>2]|0)|0;else g=f;f=h;if((g-f|0)>>>0>=e>>>0)break a;f=(a[v>>0]|0)!=0;if(f){l=(f^1)<<31>>31;break}g=c[s>>2]|0;c[t>>2]=o;c[m>>2]=p;g=g+12|0;do f=bb(g|0,n|0,t|0)|0;while((f|0)==4);switch(f|0){case 0:break;case 110:{l=-2;break c}default:{r=-5;u=30;break c}}}if((u|0)==30){i=x;return r|0}d=l;i=x;return d|0}else{h=c[w>>2]|0;f=c[q>>2]|0;if(f>>>0>>0)g=f+(c[b>>2]|0)|0;else g=f;f=h;if((g-f|0)>>>0>>0){d=(a[v>>0]|0)+-1<<24>>24<<24>>24;i=x;return d|0}}while(0);g=b+4|0;u=c[b>>2]|0;v=(c[g>>2]|0)+u|0;f=(v>>>0>>0?v+u|0:v)-f|0;f=f>>>0>e>>>0?e:f;fq(d|0,h|0,f|0)|0;if(f>>>0>>0)fq(d+f|0,c[g>>2]|0,e-f|0)|0;v=h+e|0;d=c[b>>2]|0;c[w>>2]=v>>>0<((c[g>>2]|0)+d|0)>>>0?v:v+(0-d)|0;Ra((c[b+60>>2]|0)+12|0)|0;d=e;i=x;return d|0}function kc(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=(c[d>>2]|0)+b|0;b=c[a>>2]|0;c[d>>2]=e>>>0<((c[a+4>>2]|0)+b|0)>>>0?e:e+(0-b)|0;return}function lc(a){a=a|0;gb(a+16|0)|0;return}function mc(a){a=a|0;Ua(a+16|0)|0;return}function nc(a){a=a|0;gb(a+16|0)|0;return}function oc(a){a=a|0;Ua(a+16|0)|0;return}function pc(a){a=a|0;var b=0,d=0;if(!a){a=0;return a|0}b=Xp(28)|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];d=zj(0)|0;c[b+20>>2]=d;Hj(d,0.0);Fj(d,+g[a+16>>2]);d=c[a+4>>2]|0;if(d>>>0>1){c[b+24>>2]=ze(c[a>>2]|0,d,c[a+8>>2]|0,+g[a+12>>2],0.0)|0;a=b;return a|0}else{c[b+4>>2]=1;c[b+8>>2]=0;c[b+24>>2]=0;a=b;return a|0}return 0}function qc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+32|0;if((i|0)>=(j|0))ba();q=w+16|0;r=w+8|0;s=w;if(!a){v=0;i=w;return v|0}t=a+4|0;f=c[t>>2]|0;if((d>>>0)%(f>>>0)|0|0){v=0;i=w;return v|0}v=Wa()|0;u=i;i=i+((1*(f<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!d)f=0;else{n=a+24|0;o=u+4|0;p=s+4|0;k=a+20|0;l=r+4|0;a=c[t>>2]|0;m=0;f=0;do{if(!a)a=0;else{h=0;do{a=c[k>>2]|0;c[r>>2]=c[b+(h+m<<2)>>2];g[l>>2]=0.0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];Mj(a,q,u+(h<<3)|0);Ij(c[k>>2]|0);h=h+1|0;a=c[t>>2]|0}while(h>>>0>>0)}h=c[n>>2]|0;if(!h){h=c[o>>2]|0;c[e+(m<<3)>>2]=c[u>>2];c[e+(m<<3)+4>>2]=h}else{Be(h,u,e+(((m>>>0)/(a>>>0)|0)<<3)|0);a=c[t>>2]|0;h=(m>>>0)/(a>>>0)|0;x=e+(h<<3)|0;h=e+(h<<3)+4|0;_n(s,+g[x>>2],+g[h>>2],+(a>>>0),0.0);a=c[p>>2]|0;c[x>>2]=c[s>>2];c[h>>2]=a}f=f+1|0;a=c[t>>2]|0;m=a+m|0}while(m>>>0>>0)}Ga(v|0);x=f;i=w;return x|0}function rc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0;k=i;if(!a){b=0;i=k;return b|0}d=c[a+4>>2]|0;e=c[a+8>>2]|0;f=_(e<<1,d)|0;g=Wa()|0;h=i;i=i+((1*(f<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(f|0)eq(h|0,0,(_(e,d)|0)<<3|0)|0;b=qc(a,h,f,b)|0;Ga(g|0);i=k;return b|0}function sc(a){a=a|0;var b=0;if(!a)return;Ej(c[a+20>>2]|0);b=c[a+24>>2]|0;if(b|0)Ae(b);Yp(a);return}function tc(a){a=a|0;var b=0.0,d=0,e=0;e=Xp(40)|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];c[e+16>>2]=c[a+16>>2];c[e+20>>2]=c[a+20>>2];c[e+24>>2]=c[a+24>>2];d=zj(0)|0;c[e+28>>2]=d;Hj(d,0.0);Fj(d,+g[a+16>>2]);d=c[a+4>>2]|0;if(d>>>0>1)c[e+32>>2]=Ee(c[a>>2]|0,d,c[a+8>>2]|0,+g[a+12>>2],0.0)|0;else{c[e+4>>2]=1;c[e+8>>2]=0;c[e+32>>2]=0}b=+g[a+24>>2];if(b!=0.0){c[e+36>>2]=Ve(b)|0;return e|0}else{c[e+36>>2]=0;return e|0}return 0}function uc(a,b){a=a|0;b=b|0;if(!a){b=0;return b|0}b=_(c[a+4>>2]|0,b)|0;return b|0}function vc(a,b){a=a|0;b=b|0;if(!a){b=0;return b|0}b=(b>>>0)/((c[a+4>>2]|0)>>>0)|0;return b|0}function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+48|0;if((i|0)>=(j|0))ba();p=D+32|0;q=D+24|0;B=D+8|0;r=D+16|0;x=D;if(!a){C=0;i=D;return C|0}y=a+4|0;A=c[y>>2]|0;C=Wa()|0;z=i;i=i+((1*(A<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!d)a=0;else{A=a+32|0;s=z+4|0;t=q+4|0;u=a+28|0;v=r+4|0;w=a+36|0;l=a+20|0;m=B+4|0;n=x+4|0;o=0;a=0;do{f=c[A>>2]|0;h=c[b+(o<<3)>>2]|0;k=c[b+(o<<3)+4>>2]|0;if(!f){c[z>>2]=h;c[s>>2]=k}else{c[q>>2]=h;c[t>>2]=k;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];Je(f,p,z)}if(c[y>>2]|0){h=0;do{f=c[u>>2]|0;k=c[z+(h<<3)+4>>2]|0;c[r>>2]=c[z+(h<<3)>>2];c[v>>2]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];Lj(f,p,B);f=c[w>>2]|0;if(f|0){k=c[m>>2]|0;c[x>>2]=c[B>>2];c[n>>2]=k;c[p>>2]=c[x>>2];c[p+4>>2]=c[x+4>>2];Te(f,p,B)}g[e+((_(c[y>>2]|0,o)|0)+h<<2)>>2]=+g[B>>2]*+g[l>>2];a=a+1|0;Ij(c[u>>2]|0);h=h+1|0}while(h>>>0<(c[y>>2]|0)>>>0)}o=o+1|0}while((o|0)!=(d|0))}Ga(C|0);C=a;i=D;return C|0}function xc(a){a=a|0;if(!a){a=0;return a|0}a=_(c[a+4>>2]<<1,c[a+8>>2]|0)|0;return a|0}function yc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0;k=i;if(!a){b=0;i=k;return b|0}d=c[a+8>>2]|0;if(!d){b=0;i=k;return b|0}d=d<<1;e=Wa()|0;f=i;i=i+((1*(d<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(d|0){h=0;do{g[f+(h<<3)>>2]=0.0;g[f+(h<<3)+4>>2]=0.0;h=h+1|0}while((h|0)!=(d|0))}b=wc(a,f,d,b)|0;Ga(e|0);i=k;return b|0}function zc(a){a=a|0;var b=0;b=c[a+32>>2]|0;if(b|0)He(b);b=c[a+36>>2]|0;if(!b)return;Se(b);return}function Ac(a){a=a|0;var b=0;if(!a)return;Ej(c[a+28>>2]|0);b=c[a+32>>2]|0;if(b|0)Fe(b);b=c[a+36>>2]|0;if(b|0)Re(b);Yp(a);return}function Bc(b){b=b|0;var d=0,e=0,f=0,g=0;e=c[b>>2]|0;g=Xp(e)|0;_i(e,g);e=(c[b>>2]|0)>>>1;d=e;while(1)if(!(a[g+d>>0]|0))d=d+-1|0;else break;while(1){f=g+e|0;if(!(a[f>>0]|0))e=e+1|0;else break}e=c[b+16>>2]|0;if(e|0){e=e>>>0>1?e:1;eq(g+(d+1-e)|0,0,e|0)|0}d=c[b+12>>2]|0;if(!d)return g|0;eq(f|0,0,(d>>>0>1?d:1)|0)|0;return g|0}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=d>>>0>>0?d:b;gq(c|0,a|0,b<<2|0)|0;return b|0}function Dc(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;if(dp(a,c[2]|0)|0)if(dp(a,c[4]|0)|0)if(dp(a,c[6]|0)|0)if(dp(a,c[8]|0)|0)if(dp(a,c[10]|0)|0)if(dp(a,c[12]|0)|0)if(!(dp(a,c[14]|0)|0))a=6;else{e=c[2348]|0;c[b>>2]=a;Kp(e,10834,b)|0;a=0}else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;i=d;return a|0}function Ec(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;switch(a|0){case 1:case 0:{b=0;break}case 2:{b=1;break}case 3:{b=1;break}case 4:{b=2;break}case 5:{b=3;break}case 6:{b=4;break}default:{f=c[2348]|0;c[d>>2]=a;Kp(f,10905,d)|0;kb(1)}}i=e;return b|0}function Fc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h;switch(a|0){case 0:{Qp(10962,71,1,c[2348]|0)|0;kb(-1);break}case 2:{if(!e){e=0;i=h;return e|0}else{f=0;a=0}do{a=(d[b+f>>0]|0)+a|0;f=f+1|0}while((f|0)!=(e|0));e=(a^255)+1&255;i=h;return e|0}case 3:{f=d[40210]|0;if(!e){e=0;i=h;return e|0}else{g=0;a=-1}do{a=(d[b+g>>0]|0)^a;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;g=g+1|0}while((g|0)!=(e|0));e=a&255^255;i=h;return e|0}case 4:{e=Gc(b,e)|0;i=h;return e|0}case 5:{e=Hc(b,e)|0;i=h;return e|0}case 6:{f=Zj(79764919)|0;if(!e){e=0;i=h;return e|0}else{g=0;a=-1}do{a=(d[b+g>>0]|0)^a;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;a=f&0-(a&1)^a>>>1;g=g+1|0}while((g|0)!=(e|0));e=~a;i=h;return e|0}case 1:{e=0;i=h;return e|0}default:{h=c[2348]|0;c[f>>2]=a;Kp(h,11034,f)|0;kb(1)}}return 0}function Gc(a,b){a=a|0;b=b|0;var c=0,e=0,f=0;e=Xj(32773)|0;if(!b){f=0;return f|0}else{f=0;c=-1}do{c=(d[a+f>>0]|0)^c;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;f=f+1|0}while((f|0)!=(b|0));f=c&65535^65535;return f|0}function Hc(a,b){a=a|0;b=b|0;var c=0,e=0,f=0;e=Yj(6122955)|0;if(!b){f=0;return f|0}else{f=0;c=-1}do{c=(d[a+f>>0]|0)^c;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;c=e&0-(c&1)^c>>>1;f=f+1|0}while((f|0)!=(b|0));f=c&16777215^16777215;return f|0}function Ic(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;switch(a|0){case 0:{Qp(11093,71,1,c[2348]|0)|0;kb(-1);break}case 1:{a=1;return a|0}default:{a=(Fc(a,b,d)|0)==(e|0)&1;return a|0}}return 0}function Jc(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();d=f;b=0;do{if(!(dp(a,c[64+(b<<3)>>2]|0)|0)){e=5;break}b=b+1|0}while(b>>>0<28);if((e|0)==5){i=f;return b|0}e=c[2348]|0;c[d>>2]=a;Kp(e,11990,d)|0;e=0;i=f;return e|0}function Kc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();f=g;d=g+16|0;e=g+8|0;do switch(a|0){case 1:{f=b;i=g;return f|0}case 2:{f=b*3|0;i=g;return f|0}case 3:{f=b*5|0;i=g;return f|0}case 4:{f=(b<<1&1073741822)*7|0;f=((f&6|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 5:{f=b<<1&536870910;i=g;return f|0}case 6:{f=(b&536870911)*12|0;f=(f>>>2&1)+(f>>>3)|0;i=g;return f|0}case 7:{f=b<<3;f=(((((f>>>0)%12|0|0)!=0&1)+((f>>>0)/12|0)|0)*24|0)>>>3;i=g;return f|0}case 8:{f=(b>>>1)+b+(b&1)|0;i=g;return f|0}case 9:{f=(b>>>2)+b+((b&3|0)!=0&1)|0;i=g;return f|0}case 10:{f=(b>>>3)+b+((b&7|0)!=0&1)|0;i=g;return f|0}case 11:{f=(b<<1)+2|0;i=g;return f|0}case 12:{f=(b<<1)+2|0;i=g;return f|0}case 13:{f=(b*3|0)+3|0;i=g;return f|0}case 14:{f=(b*6|0)+11|0;i=g;return f|0}case 15:{f=(((b<<2&2147483644|3)+(b<<3|6)|0)>>>3)+1|0;i=g;return f|0}case 16:{f=b<<3|6;f=(((f+2|0)>>>0)/3|0)+f|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 17:{f=b<<3|6;f=((f+3|0)>>>2)+f|0;f=((f&6|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 18:{f=b<<3|6;f=(((f+4|0)>>>0)/5|0)+f|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 19:{f=b<<3|6;f=(((f+5|0)>>>0)/6|0)+f|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 20:{f=b<<3|6;f=(((f+6|0)>>>0)/7|0)+f|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 21:{f=b<<3;f=f+8+((f+9|0)>>>1)|0;f=(f>>>2&1)+(f>>>3)|0;i=g;return f|0}case 22:{f=b<<3;f=f+8+(((f+10|0)>>>0)/3|0)|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 23:{f=b<<3;f=f+8+((f+11|0)>>>2)|0;f=((f&6|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 24:{f=b<<3;f=f+8+(((f+12|0)>>>0)/5|0)|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 25:{f=b<<3;f=f+8+(((f+13|0)>>>0)/6|0)|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 26:{f=b<<3;f=f+8+(((f+14|0)>>>0)/7|0)|0;f=((f&7|0)!=0&1)+(f>>>3)|0;i=g;return f|0}case 27:{if(!b){Qp(12061,69,1,c[2348]|0)|0;kb(1)}Vp(d,b,223);f=((c[d+4>>2]|0)!=0&1)+(c[d>>2]|0)|0;Vp(e,b,f);f=_((c[e>>2]|0)+32+((c[e+4>>2]|0)!=0&1)|0,f)|0;i=g;return f|0}case 0:{f=0;i=g;return f|0}default:{c[f>>2]=a;Rp(12131,f)|0;kb(-1)}}while(0);return 0}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;if(!b){Qp(12196,61,1,c[2348]|0)|0;kb(1)}if(d>>>0>>0){Qp(12258,76,1,c[2348]|0)|0;kb(1)}else{a=a<<3;b=_((((a>>>0)%(b>>>0)|0|0)!=0&1)+((a>>>0)/(b>>>0)|0)|0,d)|0;return ((b&7|0)!=0&1)+(b>>>3)|0}return 0}function Mc(a){a=a|0;var b=0.0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;do switch(a|0){case 0:{b=0.0;break}case 1:{b=1.0;break}case 2:{b=.3333333432674408;break}case 3:{b=.20000000298023224;break}case 4:{b=.5714285969734192;break}case 5:{b=.5;break}case 6:{b=.6666666865348816;break}case 7:{b=.5;break}case 8:{b=.6666666865348816;break}case 9:{b=.800000011920929;break}case 10:{b=.8888888955116272;break}case 11:{b=.5;break}case 12:{b=.5;break}case 13:{b=.3333333432674408;break}case 14:{b=.1666666716337204;break}case 15:{b=.6666666865348816;break}case 16:{b=.75;break}case 17:{b=.800000011920929;break}case 18:{b=.8333333134651184;break}case 19:{b=.8571428656578064;break}case 20:{b=.875;break}case 21:{b=.6666666865348816;break}case 22:{b=.75;break}case 23:{b=.800000011920929;break}case 24:{b=.8333333134651184;break}case 25:{b=.8571428656578064;break}case 26:{b=.875;break}case 27:{b=.8745098114013672;break}default:{c[d>>2]=a;Rp(12335,d)|0;kb(-1)}}while(0);i=e;return +b}function Nc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;do switch(a|0){case 0:{Sp(12390)|0;kb(-1);break}case 1:{d=Ad(0)|0;break}case 2:{d=Ed(b)|0;break}case 3:{d=Jd(b)|0;break}case 4:{d=hd(b)|0;break}case 5:{d=nd(b)|0;break}case 6:{d=ud(b)|0;break}case 7:{d=dd(b)|0;break}case 8:{d=Vd(b)|0;break}case 9:{d=_d(b)|0;break}case 10:{d=fe(b)|0;break}case 14:case 13:case 12:case 11:{d=Sc(a)|0;break}case 26:case 25:case 24:case 23:case 22:case 21:case 20:case 19:case 18:case 17:case 16:case 15:{d=Zc(a)|0;break}case 27:{d=Od(27)|0;break}default:{c[e>>2]=a;Rp(12454,e)|0;kb(-1)}}while(0);i=f;return d|0}function Oc(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();d=e;b=c[a>>2]|0;do switch(b|0){case 0:{Sp(12507)|0;kb(-1);break}case 1:{Dd(a);break}case 2:{Id(a);break}case 3:{Nd(a);break}case 4:{md(a);break}case 5:{sd(a);break}case 6:{zd(a);break}case 7:{gd(a);break}case 8:{Yd(a);break}case 9:{be(a);break}case 10:{ie(a);break}case 14:case 13:case 12:case 11:{Yc(a);break}case 26:case 25:case 24:case 23:case 22:case 21:case 20:case 19:case 18:case 17:case 16:case 15:{bd(a);break}case 27:{Sd(a);break}default:{c[d>>2]=b;Rp(12573,d)|0;kb(-1)}}while(0);i=e;return}function Pc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;xb[c[a+136>>2]&63](a,b,d,e);return}function Qc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;xb[c[a+140>>2]&63](a,b,d,e);return}function Rc(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0;n=i;h=c[b+144>>2]|0;if(h|0){xb[h&63](b,e,f,g);i=n;return}h=Kc(c[b>>2]|0,e)|0;k=Wa()|0;l=i;i=i+((1*h|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(h|0){m=0;do{o=m<<3;a[l+m>>0]=(d[f+(o|6)>>0]|0)>>>6&2|((d[f+(o|5)>>0]|0)>>>5&4|((d[f+(o|4)>>0]|0)>>>4&8|((d[f+(o|3)>>0]|0)>>>3&16|((d[f+(o|2)>>0]|0)>>>2&32|((d[f+(o|1)>>0]|0)>>>1&64|(d[f+o>>0]|0)&128)))))|(d[f+(o|7)>>0]|0)>>>7;m=m+1|0}while((m|0)!=(h|0))}xb[c[b+140>>2]&63](b,e,l,g);Ga(k|0);i=n;return}function Sc(a){a=a|0;var b=0;b=Xp(148)|0;c[b>>2]=a;g[b+4>>2]=+Mc(a);c[b+136>>2]=1;c[b+140>>2]=2;c[b+144>>2]=3;switch(c[b>>2]|0){case 11:{c[b+28>>2]=2;c[b+32>>2]=7;c[b+24>>2]=288;c[b+44>>2]=3;c[b+48>>2]=1;c[b+52>>2]=5;c[b+56>>2]=1;c[b+60>>2]=3;break}case 12:{c[b+28>>2]=2;c[b+32>>2]=9;c[b+24>>2]=296;c[b+44>>2]=4;c[b+48>>2]=2;c[b+52>>2]=6;c[b+56>>2]=2;c[b+60>>2]=4;break}case 13:{c[b+28>>2]=3;c[b+32>>2]=9;c[b+24>>2]=304;c[b+44>>2]=5;c[b+48>>2]=3;c[b+52>>2]=7;c[b+56>>2]=3;c[b+60>>2]=5;break}case 14:{c[b+28>>2]=6;c[b+32>>2]=15;c[b+24>>2]=316;c[b+44>>2]=6;c[b+48>>2]=4;c[b+52>>2]=8;c[b+56>>2]=4;c[b+60>>2]=6;break}default:{Qp(12666,39,1,c[2348]|0)|0;kb(1)}}c[b+8>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;return b|0}function Tc(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(!e){i=0;h=0;l=0}else{r=b+28|0;s=b+24|0;k=c[r>>2]|0;i=0;j=0;h=0;l=0;do{q=d[f+j>>0]|0;n=k;m=k;p=0;k=l;while(1){o=q>>>(7-p|0)&1|k<<1;if(!m){k=n;l=0}else{k=0;do{i=((eb(c[(c[s>>2]|0)+(k<<2)>>2]&o|0)|0)&1|(i&255)<<1)&255;a[g+(h>>>3)>>0]=i;h=h+1|0;k=k+1|0;l=c[r>>2]|0}while(k>>>0>>0);k=l}p=p+1|0;if((p|0)==8){l=o;break}else{n=k;m=l;k=o}}j=j+1|0}while((j|0)!=(e|0))}n=b+32|0;j=c[n>>2]|0;if((j|0)!=1){o=b+28|0;p=b+24|0;k=c[o>>2]|0;m=0;do{l=l<<1;if(!k)k=0;else{j=0;do{i=((eb(c[(c[p>>2]|0)+(j<<2)>>2]&l|0)|0)&1|(i&255)<<1)&255;a[g+(h>>>3)>>0]=i;h=h+1|0;j=j+1|0;k=c[o>>2]|0}while(j>>>0>>0);j=c[n>>2]|0}m=m+1|0}while(m>>>0<(j+-1|0)>>>0)}if(h&7)do{i=(i&255)<<1&255;a[g+(h>>>3)>>0]=i;h=h+1|0}while((h&7|0)!=0);if((h|0)==((Kc(c[b>>2]|0,e)|0)<<3|0))return;else Ha(12706,12627,131,12650)}function Uc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n;m=b+8|0;if((c[m>>2]|0)==(d|0)){d=b+16|0;h=d;g=b+12|0;d=c[d>>2]|0}else{c[m>>2]=d;k=b+12|0;c[k>>2]=Kc(c[b>>2]|0,d)|0;d=b+20|0;g=c[d>>2]|0;if(g|0)qb[c[b+60>>2]&31](g);c[d>>2]=rb[c[b+44>>2]&7](c[m>>2]<<3)|0;h=b+16|0;d=_p(c[h>>2]|0,c[k>>2]<<3)|0;c[h>>2]=d;g=k}k=c[g>>2]|0;dk(e,k,d,k<<3,l);if(c[g>>2]&536870911|0){d=0;do{l=(c[h>>2]|0)+d|0;a[l>>0]=((a[l>>0]|0)!=0)<<31>>31;d=d+1|0}while(d>>>0>2]<<3>>>0)}l=b+20|0;wb[c[b+48>>2]&7](c[l>>2]|0,0)|0;pb[c[b+52>>2]&15](c[l>>2]|0,c[h>>2]|0,(c[b+32>>2]|0)+-1+(c[m>>2]<<3)|0)|0;vb[c[b+56>>2]&7](c[l>>2]|0,f,c[m>>2]<<3,0)|0;i=n;return}function Vc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=b+8|0;if((c[i>>2]|0)==(d|0))d=b+12|0;else{c[i>>2]=d;h=b+12|0;c[h>>2]=Kc(c[b>>2]|0,d)|0;d=b+20|0;g=c[d>>2]|0;if(g|0)qb[c[b+60>>2]&31](g);c[d>>2]=rb[c[b+44>>2]&7](c[i>>2]<<3)|0;d=b+16|0;c[d>>2]=_p(c[d>>2]|0,c[h>>2]<<3)|0;d=h}g=b+16|0;if(c[d>>2]&536870911|0){h=0;do{a[(c[g>>2]|0)+h>>0]=a[e+h>>0]|0;h=h+1|0}while(h>>>0>2]<<3>>>0)}e=b+20|0;wb[c[b+48>>2]&7](c[e>>2]|0,0)|0;pb[c[b+52>>2]&15](c[e>>2]|0,c[g>>2]|0,(c[b+32>>2]|0)+-1+(c[i>>2]<<3)|0)|0;vb[c[b+56>>2]&7](c[e>>2]|0,f,c[i>>2]<<3,0)|0;return}function Wc(a){a=a|0;c[a+28>>2]=2;c[a+32>>2]=7;c[a+24>>2]=288;c[a+44>>2]=3;c[a+48>>2]=1;c[a+52>>2]=5;c[a+56>>2]=1;c[a+60>>2]=3;return}function Xc(a){a=a|0;c[a+28>>2]=2;c[a+32>>2]=9;c[a+24>>2]=296;c[a+44>>2]=4;c[a+48>>2]=2;c[a+52>>2]=6;c[a+56>>2]=2;c[a+60>>2]=4;return}function Yc(a){a=a|0;var b=0;b=c[a+20>>2]|0;if(b|0)qb[c[a+60>>2]&31](b);b=c[a+16>>2]|0;if(!b){Yp(a);return}Yp(b);Yp(a);return}function Zc(a){a=a|0;var b=0;b=Xp(148)|0;c[b>>2]=a;g[b+4>>2]=+Mc(a);c[b+136>>2]=4;c[b+140>>2]=5;c[b+144>>2]=6;do switch(c[b>>2]|0){case 15:{Wc(b);c[b+36>>2]=2;c[b+40>>2]=8928;break}case 16:{Wc(b);c[b+36>>2]=3;c[b+40>>2]=8944;break}case 17:{Wc(b);c[b+36>>2]=4;c[b+40>>2]=8968;break}case 18:{Wc(b);c[b+36>>2]=5;c[b+40>>2]=9e3;break}case 19:{Wc(b);c[b+36>>2]=6;c[b+40>>2]=9040;break}case 20:{Wc(b);c[b+36>>2]=7;c[b+40>>2]=9088;break}case 21:{Xc(b);c[b+36>>2]=2;c[b+40>>2]=9144;break}case 22:{Xc(b);c[b+36>>2]=3;c[b+40>>2]=9160;break}case 23:{Xc(b);c[b+36>>2]=4;c[b+40>>2]=9184;break}case 24:{Xc(b);c[b+36>>2]=5;c[b+40>>2]=9216;break}case 25:{Xc(b);c[b+36>>2]=6;c[b+40>>2]=9256;break}case 26:{Xc(b);c[b+36>>2]=7;c[b+40>>2]=9304;break}default:{Qp(12820,49,1,c[2348]|0)|0;kb(1)}}while(0);c[b+8>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;return b|0}function _c(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!e){i=0;h=0;l=0;k=0}else{r=b+28|0;s=b+36|0;t=b+40|0;u=b+24|0;l=c[r>>2]|0;i=0;j=0;h=0;m=0;k=0;do{q=d[f+j>>0]|0;n=l;p=0;o=m;while(1){k=q>>>(7-p|0)&1|k<<1;if(!n)n=0;else{m=0;do{n=(_(c[s>>2]|0,m)|0)+o|0;if(c[(c[t>>2]|0)+(n<<2)>>2]|0){i=((eb(c[(c[u>>2]|0)+(m<<2)>>2]&k|0)|0)&1|(i&255)<<1)&255;a[g+(h>>>3)>>0]=i;l=c[r>>2]|0;h=h+1|0}m=m+1|0}while(m>>>0>>0);n=l}m=((o+1|0)>>>0)%((c[s>>2]|0)>>>0)|0;p=p+1|0;if((p|0)==8)break;else o=m}j=j+1|0}while((j|0)!=(e|0));l=m}r=b+32|0;if((c[r>>2]|0)!=1){s=b+28|0;t=b+36|0;p=b+40|0;q=b+24|0;j=c[s>>2]|0;n=j;o=0;while(1){k=k<<1;if(!n){m=j;j=0}else{m=0;do{f=(_(c[t>>2]|0,m)|0)+l|0;if(c[(c[p>>2]|0)+(f<<2)>>2]|0){i=((eb(c[(c[q>>2]|0)+(m<<2)>>2]&k|0)|0)&1|(i&255)<<1)&255;a[g+(h>>>3)>>0]=i;j=c[s>>2]|0;h=h+1|0}m=m+1|0}while(m>>>0>>0);m=j}o=o+1|0;if(o>>>0>=((c[r>>2]|0)+-1|0)>>>0)break;else{n=j;j=m;l=((l+1|0)>>>0)%((c[t>>2]|0)>>>0)|0}}}if(h&7)do{i=(i&255)<<1&255;a[g+(h>>>3)>>0]=i;h=h+1|0}while((h&7|0)!=0);if((h|0)==((Kc(c[b>>2]|0,e)|0)<<3|0))return;else Ha(12706,12761,157,12794)}function $c(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=b+8|0;if((c[s>>2]|0)==(d|0)){h=b+28|0;k=b+32|0}else{c[s>>2]=d;c[b+12>>2]=Kc(c[b>>2]|0,d)|0;d=c[s>>2]|0;k=b+32|0;h=b+28|0;i=_((c[k>>2]|0)+-1+(d<<3)|0,c[h>>2]|0)|0;j=b+20|0;g=c[j>>2]|0;if(g){qb[c[b+60>>2]&31](g);d=c[s>>2]|0}c[j>>2]=rb[c[b+44>>2]&7](d<<3)|0;d=b+16|0;c[d>>2]=_p(c[d>>2]|0,i)|0;d=c[s>>2]|0}g=c[h>>2]|0;p=_((c[k>>2]|0)+-1+(d<<3)|0,g)|0;if(!p)d=b+16|0;else{q=b+36|0;r=b+40|0;d=b+16|0;i=a[e>>0]|0;n=0;l=0;j=0;o=0;while(1){if(!g)g=0;else{g=l;m=0;while(1){l=(_(c[q>>2]|0,m)|0)+o|0;if(c[(c[r>>2]|0)+(l<<2)>>2]|0){a[(c[d>>2]|0)+(m+n)>>0]=((i&255&1<<7-g|0)!=0)<<31>>31;g=g+1|0;if((g|0)==8){j=j+1|0;i=a[e+j>>0]|0;l=0}else l=g}else{a[(c[d>>2]|0)+(m+n)>>0]=127;l=g}m=m+1|0;g=c[h>>2]|0;if(m>>>0>=g>>>0)break;else g=l}}n=g+n|0;if(n>>>0>=p>>>0)break;else o=((o+1|0)>>>0)%((c[q>>2]|0)>>>0)|0}}e=b+20|0;wb[c[b+48>>2]&7](c[e>>2]|0,0)|0;pb[c[b+52>>2]&15](c[e>>2]|0,c[d>>2]|0,(c[k>>2]|0)+-1+(c[s>>2]<<3)|0)|0;vb[c[b+56>>2]&7](c[e>>2]|0,f,c[s>>2]<<3,0)|0;return}function ad(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b+8|0;if((c[q>>2]|0)==(d|0)){h=b+28|0;k=b+32|0}else{c[q>>2]=d;c[b+12>>2]=Kc(c[b>>2]|0,d)|0;d=c[q>>2]|0;k=b+32|0;h=b+28|0;i=_((c[k>>2]|0)+-1+(d<<3)|0,c[h>>2]|0)|0;j=b+20|0;g=c[j>>2]|0;if(g){qb[c[b+60>>2]&31](g);d=c[q>>2]|0}c[j>>2]=rb[c[b+44>>2]&7](d<<3)|0;d=b+16|0;c[d>>2]=_p(c[d>>2]|0,i)|0;d=c[q>>2]|0}g=c[h>>2]|0;n=_((c[k>>2]|0)+-1+(d<<3)|0,g)|0;if(!n)d=b+16|0;else{o=b+36|0;p=b+40|0;d=b+16|0;l=0;i=0;m=0;while(1){if(!g)g=0;else{g=i;j=0;while(1){i=(_(c[o>>2]|0,j)|0)+m|0;if(!(c[(c[p>>2]|0)+(i<<2)>>2]|0)){a[(c[d>>2]|0)+(j+l)>>0]=127;i=g}else{a[(c[d>>2]|0)+(j+l)>>0]=a[e+g>>0]|0;i=g+1|0}j=j+1|0;g=c[h>>2]|0;if(j>>>0>=g>>>0)break;else g=i}}l=g+l|0;if(l>>>0>=n>>>0)break;else m=((m+1|0)>>>0)%((c[o>>2]|0)>>>0)|0}}e=b+20|0;wb[c[b+48>>2]&7](c[e>>2]|0,0)|0;pb[c[b+52>>2]&15](c[e>>2]|0,c[d>>2]|0,(c[k>>2]|0)+-1+(c[q>>2]<<3)|0)|0;vb[c[b+56>>2]&7](c[e>>2]|0,f,c[q>>2]<<3,0)|0;return}function bd(a){a=a|0;var b=0;b=c[a+20>>2]|0;if(b|0)qb[c[a+60>>2]&31](b);b=c[a+16>>2]|0;if(!b){Yp(a);return}Yp(b);Yp(a);return}function cd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;if(a>>>0>16777215){Qp(12870,61,1,c[2348]|0)|0;kb(1)}else{f=0;b=0}while(1){e=c[484+(f<<2)>>2]&a;e=(d[39691+(e>>>8&255)>>0]|0)+(d[39691+(e&255)>>0]|0)+(d[39691+(e>>>16&255)>>0]|0)&1|b<<1;f=f+1|0;if((f|0)==12){g=e;break}else b=e}if(((d[39691+(b>>>7&255)>>0]|0)+(d[39691+(g&255)>>0]|0)|0)>>>0<4){h=0;h=h^a;h=h&4095;return h|0}else b=0;while(1){e=c[340+(b<<2)>>2]^g;if(((d[39691+(e>>>8&255)>>0]|0)+(d[39691+(e&255)>>0]|0)|0)>>>0<3){h=7;break}b=b+1|0;if(b>>>0>=12){f=0;b=0;break}}if((h|0)==7){h=e<<12|1<<11-b;h=h^a;h=h&4095;return h|0}while(1){e=c[340+(f<<2)>>2]&g;e=(d[39691+(e>>>8&255)>>0]|0)+(d[39691+(e&255)>>0]|0)+(d[39691+(e>>>16&255)>>0]|0)&1|b<<1;f=f+1|0;if((f|0)==12){f=e;break}else b=e}if(((d[39691+(b>>>7&255)>>0]|0)+(d[39691+(f&255)>>0]|0)|1|0)==3){h=f;h=h^a;h=h&4095;return h|0}else b=0;while(1){e=c[340+(b<<2)>>2]^f;if(((d[39691+(e>>>8&255)>>0]|0)+(d[39691+(e&255)>>0]|0)|0)>>>0<3)break;b=b+1|0;if(b>>>0>=12){b=0;h=13;break}}if((h|0)==13){h=b^a;h=h&4095;return h|0}h=e|1<<23-b;h=h^a;h=h&4095;return h|0}function dd(a){a=a|0;a=Xp(148)|0;c[a>>2]=7;g[a+4>>2]=+Mc(7);c[a+136>>2]=7;c[a+140>>2]=8;c[a+144>>2]=0;return a|0}function ed(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=(e>>>0)%3|0;h=e-s|0;if((s|0)==(e|0))b=0;else{q=d[39691]|0;r=0;b=0;do{n=d[f+(r+1)>>0]|0;m=a[f+(r+2)>>0]|0;i=n>>>4|(d[f+r>>0]|0)<<4;n=n<<8&3840;k=0;l=0;while(1){j=c[388+(k<<2)>>2]&i;j=(d[39691+(j>>>8)>>0]|0)+(d[39691+(j&255)>>0]|0)+q&1|l<<1;k=k+1|0;if((k|0)==24){p=j;o=l;break}else l=j}k=n|m&255;l=0;i=0;while(1){j=c[388+(l<<2)>>2]&k;j=(d[39691+(j>>>8)>>0]|0)+(d[39691+(j&255)>>0]|0)+q&1|i<<1;l=l+1|0;if((l|0)==24)break;else i=j}a[g+b>>0]=o>>>15;a[g+(b|1)>>0]=o>>>7;a[g+(b+2)>>0]=p;a[g+(b+3)>>0]=i>>>15;a[g+(b+4)>>0]=i>>>7;a[g+(b+5)>>0]=j;b=b+6|0;r=r+3|0}while(r>>>0>>0)}if(h>>>0>>0){n=s*3|0;m=b;while(1){k=d[f+h>>0]|0;l=0;i=0;while(1){j=(d[39691+(c[388+(l<<2)>>2]&k)>>0]|0)&1|i<<1;l=l+1|0;if((l|0)==24)break;else i=j}a[g+m>>0]=i>>>15;a[g+(m+1)>>0]=i>>>7;a[g+(m+2)>>0]=j;h=h+1|0;if((h|0)==(e|0))break;else m=m+3|0}h=e;b=b+n|0}if((b|0)!=(Kc(7,e)|0))Ha(12932,12995,326,13023);if((h|0)==(e|0))return;else Ha(19100,12995,327,13023)}function fd(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=(c>>>0)%3|0;g=c-i|0;if((i|0)==(c|0))b=0;else{h=0;b=0;do{j=(d[e+(b+4)>>0]|0)<<8|(d[e+(b+3)>>0]|0)<<16|(d[e+(b+5)>>0]|0);k=cd((d[e+(b|1)>>0]|0)<<8|(d[e+b>>0]|0)<<16|(d[e+(b+2)>>0]|0))|0;j=cd(j)|0;a[f+h>>0]=k>>>4;a[f+(h+1)>>0]=j>>>8&15|k<<4;a[f+(h+2)>>0]=j;b=b+6|0;h=h+3|0}while(h>>>0>>0)}if(g>>>0>>0){i=i*3|0;h=b;while(1){a[f+g>>0]=cd((d[e+(h+1)>>0]|0)<<8|(d[e+h>>0]|0)<<16|(d[e+(h+2)>>0]|0))|0;g=g+1|0;if((g|0)==(c|0))break;else h=h+3|0}g=c;b=b+i|0}if((b|0)!=(Kc(7,c)|0))Ha(13044,12995,396,13106);if((g|0)==(c|0))return;else Ha(19100,12995,397,13106)}function gd(a){a=a|0;Yp(a);return}function hd(a){a=a|0;a=Xp(148)|0;c[a>>2]=4;g[a+4>>2]=+Mc(4);c[a+136>>2]=9;c[a+140>>2]=10;c[a+144>>2]=11;return a|0}function id(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=Lc(c,4,7)|0;if(!c)return;else{g=0;h=0}while(1){j=a[e+g>>0]|0;i=d[13127+(j&15)>>0]|0;$j(f,b,h,7,d[13127+((j&255)>>>4&255)>>0]|0);$j(f,b,h+7|0,7,i);g=g+1|0;if((g|0)==(c|0))break;else h=h+14|0}return}function jd(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();l=n+4|0;m=n;b=Lc(e,4,7)|0;if(!e){i=n;return}else{h=0;k=0}while(1){ak(f,b,k,7,l);ak(f,b,k+7|0,7,m);a[g+h>>0]=d[13143+(c[m>>2]|0)>>0]|0|(d[13143+(c[l>>2]|0)>>0]|0)<<4;h=h+1|0;if((h|0)==(e|0))break;else k=k+14|0}i=n;return}function kd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Lc(c,4,7)|0;if(!c)b=0;else{b=0;f=0;while(1){h=ld(d+f|0)|0;a[e+b>>0]=(h&255)<<4|(ld(d+(f+7)|0)|0)&255;b=b+1|0;if((b|0)==(c|0))break;else f=f+14|0}b=c*14|0}if((b|0)==(g<<3|0))return;else Ha(13843,13271,193,13299)}function ld(a){a=a|0;var b=0,c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;i=d[a>>0]|0;o=i^255;r=d[a+1>>0]|0;s=r^255;t=d[a+2>>0]|0;j=t^255;k=d[a+3>>0]|0;l=k^255;m=d[a+4>>0]|0;n=m^255;p=d[a+5>>0]|0;q=p^255;b=d[a+6>>0]|0;c=b^255;f=0;g=0;a=0;while(1){e=d[13127+g>>0]|0;e=(e&32|0?s:r)+(e&64|0?o:i)+(e&16|0?j:t)+(e&8|0?l:k)+(e&4|0?n:m)+(e&2|0?q:p)+(e&1|0?c:b)|0;h=(g|0)==0|e>>>0>>0;a=h?g&255:a;g=g+1|0;if((g|0)==16)break;else f=h?e:f}return a|0}function md(a){a=a|0;Yp(a);return}function nd(a){a=a|0;a=Xp(148)|0;c[a>>2]=5;g[a+4>>2]=+Mc(5);c[a+136>>2]=12;c[a+140>>2]=13;c[a+144>>2]=14;return a|0}function od(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(!c)return;else{b=0;f=0}while(1){g=a[d+b>>0]|0;a[e+f>>0]=a[13325+((g&255)>>>4&255)>>0]|0;a[e+(f|1)>>0]=a[13325+(g&15)>>0]|0;b=b+1|0;if((b|0)==(c|0))break;else f=f+2|0}return}function pd(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0;if(!c)return;else b=0;do{g=b<<1;a[f+b>>0]=(d[13341+(d[e+g>>0]|0)>>0]|0)<<4|(d[13341+(d[e+(g|1)>>0]|0)>>0]|0);b=b+1|0}while((b|0)!=(c|0));return}function qd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Lc(c,4,8)|0;if(!c)b=0;else{b=0;f=0;while(1){h=rd(d+f|0)|0;a[e+b>>0]=(h&255)<<4|(rd(d+(f|8)|0)|0)&255;b=b+1|0;if((b|0)==(c|0))break;else f=f+16|0}b=c<<4}if((b|0)==(g<<3|0))return;else Ha(13843,13597,181,13625)}function rd(a){a=a|0;var b=0,c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=d[a>>0]|0;o=i^255;t=d[a+1>>0]|0;u=t^255;v=d[a+2>>0]|0;j=v^255;k=d[a+3>>0]|0;l=k^255;m=d[a+4>>0]|0;n=m^255;p=d[a+5>>0]|0;q=p^255;r=d[a+6>>0]|0;s=r^255;b=d[a+7>>0]|0;c=b^255;f=0;g=0;a=0;while(1){e=d[13325+g>>0]|0;e=(e&64|0?u:t)+(e&128|0?o:i)+(e&32|0?j:v)+(e&16|0?l:k)+(e&8|0?n:m)+(e&4|0?q:p)+(e&2|0?s:r)+(e&1|0?c:b)|0;h=(g|0)==0|e>>>0>>0;a=h?g&255:a;g=g+1|0;if((g|0)==16)break;else f=h?e:f}return a|0}function sd(a){a=a|0;Yp(a);return}function td(a){a=a|0;var b=0,e=0;if(a>>>0>4095){Qp(13651,55,1,c[2348]|0)|0;kb(1)}b=a>>>8;b=(d[39947+(b&6)>>0]|0)+(d[39947+(a&102)>>0]|0)<<1&2|(d[39947+(b&10)>>0]|0)+(d[39947+(a&170)>>0]|0)&1|(d[39947+(b&1)>>0]|0)+(d[39947+(a&225)>>0]|0)<<2&4|(d[39947]|0)+(d[39947+(a&31)>>0]|0)<<3&8;if((b+-1|0)>>>0>11){b=a&15;e=a>>>1;e=e&112;b=e|b;a=a>>>2;a=a&128;a=b|a;return a|0}e=1<<12-b^a;a=e&15;b=e>>>1;b=b&112;a=b|a;e=e>>>2;e=e&128;e=a|e;return e|0}function ud(a){a=a|0;a=Xp(148)|0;c[a>>2]=6;g[a+4>>2]=+Mc(6);c[a+136>>2]=15;c[a+140>>2]=16;c[a+144>>2]=17;return a|0}function vd(c,e,f,g){c=c|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=e&1;h=e-j|0;if((j|0)==(e|0))c=0;else{i=0;c=0;do{l=b[9828+((d[f+i>>0]|0)<<1)>>1]|0;k=b[9828+((d[f+(i|1)>>0]|0)<<1)>>1]|0;a[g+c>>0]=(l&65535)>>>4;a[g+(c+1)>>0]=(k&65535)>>>8&15|(l&65535)<<4;a[g+(c+2)>>0]=k;c=c+3|0;i=i+2|0}while(i>>>0>>0)}if(j){l=b[9828+((d[f+(e+-1)>>0]|0)<<1)>>1]|0;a[g+c>>0]=(l&65535)>>>4;a[g+(c+1)>>0]=(l&65535)<<4;c=c+2|0}if((c|0)==(Kc(6,e)|0))return;else Ha(13707,13770,226,13799)}function wd(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=c&1;h=c-i|0;if((i|0)==(c|0)){g=0;b=0}else{g=0;b=0;do{k=d[e+(b+1)>>0]|0;j=k<<8&3840|(d[e+(b+2)>>0]|0);a[f+g>>0]=td(k>>>4|(d[e+b>>0]|0)<<4)|0;a[f+(g|1)>>0]=td(j)|0;b=b+3|0;g=g+2|0}while(g>>>0>>0)}if(i){a[f+g>>0]=td((d[e+(b+1)>>0]|0)>>>4|(d[e+b>>0]|0)<<4)|0;b=b+2|0}if((b|0)==(Kc(6,c)|0))return;else Ha(13707,13770,280,13821)}function xd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=c&1;h=((c*3|0)>>>1)+g|0;if(!c)b=0;else{b=0;f=0;while(1){a[e+b>>0]=yd(d+f|0)|0;b=b+1|0;if((b|0)==(c|0))break;else f=f+12|0}b=c*12|0}if((b+(g<<2)|0)==(h<<3|0))return;else Ha(13843,13770,326,13862)}function yd(b){b=b|0;var c=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;u=b+1|0;w=b+2|0;y=b+3|0;A=b+4|0;C=b+5|0;c=b+6|0;g=b+7|0;i=b+8|0;k=b+9|0;m=b+10|0;o=b+11|0;r=td(((a[u>>0]|0)<0?1024:0)|((a[b>>0]|0)<0?2048:0)|((a[w>>0]|0)<0?512:0)|((a[y>>0]|0)<0?256:0)|((a[A>>0]|0)<0?128:0)|((a[C>>0]|0)<0?64:0)|((a[c>>0]|0)<0?32:0)|((a[g>>0]|0)<0?16:0)|((a[i>>0]|0)<0?8:0)|((a[k>>0]|0)<0?4:0)|((a[m>>0]|0)<0?2:0)|(d[o>>0]|0)>>>7&255)|0;E=e[9828+(r<<1)>>1]|0;s=d[b>>0]|0;t=s^255;u=d[u>>0]|0;v=u^255;w=d[w>>0]|0;x=w^255;y=d[y>>0]|0;z=y^255;A=d[A>>0]|0;B=A^255;C=d[C>>0]|0;D=C^255;c=d[c>>0]|0;f=c^255;g=d[g>>0]|0;h=g^255;i=d[i>>0]|0;j=i^255;k=d[k>>0]|0;l=k^255;m=d[m>>0]|0;n=m^255;o=d[o>>0]|0;p=o^255;E=(E&1024|0?v:u)+(E&2048|0?t:s)+(E&512|0?x:w)+(E&256|0?z:y)+(E&128|0?B:A)+(E&64|0?D:C)+(E&32|0?f:c)+(E&16|0?h:g)+(E&8|0?j:i)+(E&4|0?l:k)+(E&2|0?n:m)+(E&1|0?p:o)|0;F=0;b=r;while(1){G=d[13889+(b*17|0)+F>>0]|0;q=e[9828+(G<<1)>>1]|0;q=(q&1024|0?v:u)+(q&2048|0?t:s)+(q&512|0?x:w)+(q&256|0?z:y)+(q&128|0?B:A)+(q&64|0?D:C)+(q&32|0?f:c)+(q&16|0?h:g)+(q&8|0?j:i)+(q&4|0?l:k)+(q&2|0?n:m)+(q&1|0?p:o)|0;r=q>>>0>>0;b=r?G:b;F=F+1|0;if((F|0)==17)break;else E=r?q:E}return b|0}function zd(a){a=a|0;Yp(a);return}function Ad(a){a=a|0;a=Xp(148)|0;c[a>>2]=1;g[a+4>>2]=+Mc(1);c[a+136>>2]=18;c[a+140>>2]=19;c[a+144>>2]=0;return a|0}function Bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;gq(d|0,c|0,b|0)|0;return}function Cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;gq(d|0,c|0,b|0)|0;return}function Dd(a){a=a|0;Yp(a);return}function Ed(a){a=a|0;a=Xp(148)|0;c[a>>2]=2;g[a+4>>2]=+Mc(2);c[a+136>>2]=20;c[a+140>>2]=21;c[a+144>>2]=22;return a|0}function Fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;fq(d|0,c|0,b|0)|0;fq(d+b|0,c|0,b|0)|0;fq(d+(b<<1)|0,c|0,b|0)|0;return}function Gd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!c)return;b=c<<1;f=0;do{g=a[d+(f+c)>>0]|0;h=a[d+(f+b)>>0]|0;a[e+f>>0]=(h|g)&a[d+f>>0]|h&g;f=f+1|0}while((f|0)!=(c|0));return}function Hd(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if(!c)return;b=c<<1;l=0;do{g=f+l|0;a[g>>0]=0;i=l<<3;j=l+c<<3;k=l+b<<3;h=0;m=0;do{h=h&255|(((d[e+(m+j)>>0]|0)+(d[e+(m+i)>>0]|0)+(d[e+(m+k)>>0]|0)|0)>>>0>383?1<<7-m:0);a[g>>0]=h;m=m+1|0}while((m|0)!=8);l=l+1|0}while((l|0)!=(c|0));return}function Id(a){a=a|0;Yp(a);return}function Jd(a){a=a|0;a=Xp(148)|0;c[a>>2]=3;g[a+4>>2]=+Mc(3);c[a+136>>2]=23;c[a+140>>2]=24;c[a+144>>2]=25;return a|0}function Kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;fq(d|0,c|0,b|0)|0;fq(d+b|0,c|0,b|0)|0;fq(d+(b<<1)|0,c|0,b|0)|0;fq(d+(b*3|0)|0,c|0,b|0)|0;fq(d+(b<<2)|0,c|0,b|0)|0;return}function Ld(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!c)return;b=c<<1;f=c*3|0;g=c<<2;h=0;do{l=a[d+h>>0]|0;m=a[d+(h+c)>>0]|0;j=a[d+(h+b)>>0]|0;k=a[d+(h+f)>>0]|0;i=a[d+(h+g)>>0]|0;o=j&l;n=j&m;a[e+h>>0]=(n|o)&k|i&o|k&l&i|i&n|k&m&i|k&j&i|m&l&(k|j|i);h=h+1|0}while((h|0)!=(c|0));return}function Md(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!c)return;b=c<<1;i=c*3|0;j=c<<2;p=0;do{k=f+p|0;a[k>>0]=0;m=p<<3;n=p+c<<3;o=p+b<<3;g=p+i<<3;h=p+j<<3;l=0;q=0;do{l=l&255|(((d[e+(q+n)>>0]|0)+(d[e+(q+m)>>0]|0)+(d[e+(q+o)>>0]|0)+(d[e+(q+g)>>0]|0)+(d[e+(q+h)>>0]|0)|0)>>>0>639?1<<7-q:0);a[k>>0]=l;q=q+1|0}while((q|0)!=8);p=p+1|0}while((p|0)!=(c|0));return}function Nd(a){a=a|0;Yp(a);return}function Od(a){a=a|0;var b=0;b=Xp(148)|0;c[b>>2]=a;g[b+4>>2]=+Mc(a);c[b+136>>2]=26;c[b+140>>2]=27;c[b+144>>2]=0;if((a|0)==27){c[b+64>>2]=8;c[b+68>>2]=285;c[b+72>>2]=1;c[b+76>>2]=1;c[b+80>>2]=32;c[b+88>>2]=255;c[b+92>>2]=223;c[b+8>>2]=0;c[b+96>>2]=0;c[b+120>>2]=Xp(255)|0;c[b+124>>2]=Xp(1020)|0;c[b+128>>2]=Xp(1020)|0;return b|0}else{Qp(18436,37,1,c[2348]|0)|0;kb(1)}return 0}function Pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(!b){Qp(18241,49,1,c[2348]|0)|0;kb(1)}Qd(a,b);k=a+104|0;l=a+100|0;b=c[l>>2]|0;if(!b){f=0;b=0}else{m=a+112|0;n=a+120|0;o=a+96|0;j=a+108|0;h=b;g=c[k>>2]|0;i=0;f=0;b=0;do{if((i|0)==(h+-1|0))g=g-(c[m>>2]|0)|0;gq(c[n>>2]|0,d+f|0,g|0)|0;h=c[n>>2]|0;Lm(c[o>>2]|0,h,h+(c[k>>2]|0)|0);gq(e+b|0,c[n>>2]|0,c[j>>2]|0)|0;f=g+f|0;b=(c[j>>2]|0)+b|0;i=i+1|0;h=c[l>>2]|0}while(i>>>0>>0)}if((f|0)!=(c[a+8>>2]|0))Ha(18291,18315,131,18336);if((b|0)==(c[a+12>>2]|0))return;else Ha(18350,18315,132,18336)}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();d=k+8|0;e=k;f=a+8|0;if((c[f>>2]|0)==(b|0)){i=k;return}c[f>>2]=b;l=a+92|0;Vp(d,b,c[l>>2]|0);d=((c[d+4>>2]|0)!=0&1)+(c[d>>2]|0)|0;m=a+100|0;c[m>>2]=d;Vp(e,b,d);d=((c[e+4>>2]|0)!=0&1)+(c[e>>2]|0)|0;c[a+104>>2]=d;g=a+80|0;e=c[g>>2]|0;h=d+e|0;c[a+108>>2]=h;b=c[m>>2]|0;m=_(d,b)|0;c[a+112>>2]=(m>>>0)%((c[f>>2]|0)>>>0)|0;d=(c[l>>2]|0)-d|0;f=a+116|0;c[f>>2]=d;c[a+12>>2]=_(b,h)|0;h=a+96|0;b=c[h>>2]|0;if(b){Im(b);e=c[g>>2]|0;d=c[f>>2]|0}c[h>>2]=Em(c[a+64>>2]|0,c[a+68>>2]|0,c[a+72>>2]|0,c[a+76>>2]|0,e,d)|0;i=k;return}function Rd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(!b){Qp(18241,49,1,c[2348]|0)|0;kb(1)}Qd(a,b);p=a+88|0;eq(c[a+124>>2]|0,0,c[p>>2]|0)|0;o=a+128|0;eq(c[o>>2]|0,0,c[p>>2]|0)|0;p=a+132|0;c[p>>2]=0;j=a+100|0;b=c[j>>2]|0;if(!b){f=0;b=0}else{k=a+112|0;l=a+120|0;m=a+108|0;n=a+96|0;h=b;g=c[a+104>>2]|0;i=0;f=0;b=0;do{if((i|0)==(h+-1|0))g=g-(c[k>>2]|0)|0;gq(c[l>>2]|0,d+f|0,c[m>>2]|0)|0;Om(c[n>>2]|0,c[l>>2]|0,c[o>>2]|0,c[p>>2]|0);gq(e+b|0,c[l>>2]|0,g|0)|0;f=(c[m>>2]|0)+f|0;b=g+b|0;i=i+1|0;h=c[j>>2]|0}while(i>>>0>>0)}if((f|0)!=(c[a+12>>2]|0))Ha(18374,18315,185,18398);if((b|0)==(c[a+8>>2]|0))return;else Ha(18412,18315,186,18398)}function Sd(a){a=a|0;var b=0;b=c[a+96>>2]|0;if(b|0)Im(b);Yp(c[a+120>>2]|0);Yp(c[a+124>>2]|0);Yp(c[a+128>>2]|0);Yp(a);return}function Td(b){b=b|0;var c=0;c=a[b>>0]|0;b=a[b+1>>0]|0;return ((d[39691+(b&a[18485]&255)>>0]|0)+(d[39691+(c&a[18484]&255)>>0]|0)&1|((d[39691+(b&a[18483]&255)>>0]|0)+(d[39691+(c&a[18482]&255)>>0]|0)&1|((d[39691+(b&a[18481]&255)>>0]|0)+(d[39691+(c&a[18480]&255)>>0]|0)&1|((d[39691+(b&a[18479]&255)>>0]|0)+(d[39691+(c&a[18478]&255)>>0]|0)&1|((d[39691+(b&a[18477]&255)>>0]|0)+(d[39691+(c&a[18476]&255)>>0]|0)&1|(d[39691+(b&a[18475]&255)>>0]|0)+(d[39691+(c&a[18474]&255)>>0]|0)<<1&2)<<1&6)<<1&14)<<1&30)<<1&62)&255|0}function Ud(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();l=m;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;h=d[b>>0]|0;k=a[b+1>>0]|0;f=a[b+2>>0]|0;g=0;b=0;do{n=g<<1;b=((1<<5-g&h|0)!=0&1)+(d[39691+(a[18474+n>>0]&k&255)>>0]|0)+(d[39691+(a[18474+(n|1)>>0]&f&255)>>0]|0)&1|b<<1&510;g=g+1|0}while((g|0)!=6);f=b&255;if(!(a[39691+(b&255)>>0]|0)){n=0;i=m;return n|0}do if(f<<24>>24!=(a[18486]|0))if(f<<24>>24!=(a[18487]|0))if(f<<24>>24!=(a[18488]|0))if(f<<24>>24!=(a[18489]|0))if(f<<24>>24!=(a[18490]|0))if(f<<24>>24!=(a[18491]|0))if(f<<24>>24!=(a[18492]|0))if(f<<24>>24!=(a[18493]|0))if(f<<24>>24!=(a[18494]|0))if(f<<24>>24!=(a[18495]|0))if(f<<24>>24!=(a[18496]|0))if(f<<24>>24!=(a[18497]|0))if(f<<24>>24!=(a[18498]|0))if(f<<24>>24!=(a[18499]|0))if(f<<24>>24!=(a[18500]|0))if(f<<24>>24!=(a[18501]|0))if(f<<24>>24!=(a[18502]|0))if(f<<24>>24==(a[18503]|0))b=17;else{if(f<<24>>24==(a[18504]|0)){b=18;break}if(f<<24>>24==(a[18505]|0)){b=19;break}if(f<<24>>24==(a[18506]|0)){b=20;break}if(f<<24>>24==(a[18507]|0)){b=21;break}else b=2;i=m;return b|0}else b=16;else b=15;else b=14;else b=13;else b=12;else b=11;else b=10;else b=9;else b=8;else b=7;else b=6;else b=5;else b=4;else b=3;else b=2;else b=1;else b=0;while(0);Vp(l,b,8);a[e+(2-(c[l>>2]|0))>>0]=1<>2];n=1;i=m;return n|0}function Vd(a){a=a|0;a=Xp(148)|0;c[a>>2]=8;g[a+4>>2]=+Mc(8);c[a+136>>2]=28;c[a+140>>2]=29;c[a+144>>2]=0;return a|0}function Wd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();h=l;k=c&1;g=c-k|0;if((k|0)==(c|0)){f=0;b=0}else{f=0;b=0;do{m=d+f|0;a[e+b>>0]=Td(m)|0;a[e+(b+1)>>0]=a[m>>0]|0;a[e+(b+2)>>0]=a[d+(f|1)>>0]|0;b=b+3|0;f=f+2|0}while(f>>>0>>0)}if(k){m=a[d+f>>0]|0;a[h>>0]=m;a[h+1>>0]=0;a[e+b>>0]=Td(h)|0;a[e+(b+1)>>0]=m;f=f|k;b=k+1+b|0}if((b|0)!=(Kc(8,c)|0))Ha(18508,18572,274,18601);if((f|0)==(c|0)){i=l;return}else Ha(19100,18572,275,18601)}function Xd(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();l=o+3|0;m=o;n=c&1;g=c-n|0;if((n|0)==(c|0)){f=0;b=0}else{h=l+1|0;k=l+2|0;f=0;b=0;do{q=d+b|0;p=e+f|0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;Ud(q,l)|0;a[p>>0]=a[h>>0]^a[q+1>>0];a[p+1>>0]=a[k>>0]^a[q+2>>0];b=b+3|0;f=f+2|0}while(f>>>0>>0)}if(n){a[m>>0]=a[d+b>>0]|0;q=a[d+(b+1)>>0]|0;a[m+1>>0]=q;a[m+2>>0]=0;a[l>>0]=0;a[l+1>>0]=0;a[l+2>>0]=0;Ud(m,l)|0;a[e+f>>0]=a[l+1>>0]^q;f=f|n;b=n+1+b|0}if((b|0)!=(Kc(8,c)|0))Ha(18508,18572,323,18623);if((f|0)==(c|0)){i=o;return}else Ha(19100,18572,324,18623)}function Yd(a){a=a|0;Yp(a);return}function Zd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();n=p;a[e>>0]=0;a[e+1>>0]=0;a[e+2>>0]=0;a[e+3>>0]=0;a[e+4>>0]=0;h=d[b>>0]|0;k=a[b+1>>0]|0;l=a[b+2>>0]|0;m=a[b+3>>0]|0;f=a[b+4>>0]|0;g=0;b=0;do{q=g<<2;b=((1<<6-g&h|0)!=0&1)+(d[39691+(a[18645+q>>0]&k&255)>>0]|0)+(d[39691+(a[18645+(q|1)>>0]&l&255)>>0]|0)+(d[39691+(a[18645+(q|2)>>0]&m&255)>>0]|0)+(d[39691+(a[18645+(q|3)>>0]&f&255)>>0]|0)&1|b<<1&510;g=g+1|0}while((g|0)!=7);f=b&255;if(!(a[39691+(b&255)>>0]|0)){q=0;i=p;return q|0}else b=0;while(1){if(f<<24>>24==(a[18673+b>>0]|0))break;b=b+1|0;if(b>>>0>=39){b=2;o=7;break}}if((o|0)==7){i=p;return b|0}Vp(n,b,8);a[e+(4-(c[n>>2]|0))>>0]=1<>2];q=1;i=p;return q|0}function _d(a){a=a|0;a=Xp(148)|0;c[a>>2]=9;g[a+4>>2]=+Mc(9);c[a+136>>2]=30;c[a+140>>2]=31;c[a+144>>2]=0;return a|0}function $d(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=i;i=i+16|0;if((i|0)>=(j|0))ba();t=w;u=w+4|0;v=f&3;s=f-v|0;if((v|0)==(f|0)){k=0;b=0}else{k=0;b=0;do{r=g+k|0;n=a[r>>0]|0;o=a[r+1>>0]|0;p=a[r+2>>0]|0;m=a[r+3>>0]|0;q=0;l=0;do{x=q<<2;l=(d[39691+(a[18645+(x|1)>>0]&o&255)>>0]|0)+(d[39691+(a[18645+x>>0]&n&255)>>0]|0)+(d[39691+(a[18645+(x|2)>>0]&p&255)>>0]|0)+(d[39691+(a[18645+(x|3)>>0]&m&255)>>0]|0)&1|l<<1&510;q=q+1|0}while((q|0)!=7);a[h+b>>0]=l;a[h+(b+1)>>0]=a[r>>0]|0;a[h+(b+2)>>0]=a[g+(k|1)>>0]|0;a[h+(b+3)>>0]=a[g+(k|2)>>0]|0;a[h+(b+4)>>0]=a[g+(k|3)>>0]|0;b=b+5|0;k=k+4|0}while(k>>>0>>0)}if(v){c[t>>2]=0;fq(t|0,g+k|0,f&3|0)|0;s=c[t>>2]|0;n=s&255;o=(s&65535)>>>8&255;q=s>>>16&255;r=s>>>24&255;s=s&255;p=(e[t>>1]|0)>>>8&255;m=0;l=0;do{x=m<<2;l=(d[39691+(a[18645+(x|1)>>0]&o&255)>>0]|0)+(d[39691+(a[18645+x>>0]&n&255)>>0]|0)+(d[39691+(a[18645+(x|2)>>0]&q&255)>>0]|0)+(d[39691+(a[18645+(x|3)>>0]&r&255)>>0]|0)&1|l<<1&510;m=m+1|0}while((m|0)!=7);t=l&255;a[u>>0]=t;x=u+1|0;a[x>>0]=s;a[u+2>>0]=p;a[u+3>>0]=q;a[u+4>>0]=r;a[h+b>>0]=t;fq(h+(b+1)|0,x|0,f&3|0)|0;k=k|v;b=v+1+b|0}if((b|0)!=(Kc(9,f)|0))Ha(18712,18776,296,18805);if((k|0)==(f|0)){i=w;return}else Ha(19100,18776,297,18805)}function ae(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();n=r+9|0;p=r+4|0;o=r;q=c&3;g=c-q|0;if((q|0)==(c|0)){f=0;b=0}else{h=n+1|0;k=n+2|0;l=n+3|0;m=n+4|0;f=0;b=0;do{t=d+b|0;s=e+f|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;Zd(t,n)|0;a[s>>0]=a[h>>0]^a[t+1>>0];a[s+1>>0]=a[k>>0]^a[t+2>>0];a[s+2>>0]=a[l>>0]^a[t+3>>0];a[s+3>>0]=a[m>>0]^a[t+4>>0];b=b+5|0;f=f+4|0}while(f>>>0>>0)}if(q){a[p>>0]=a[d+b>>0]|0;m=p+1|0;a[m>>0]=0;a[m+1>>0]=0;a[m+2>>0]=0;a[m+3>>0]=0;fq(m|0,d+(b+1)|0,c&3|0)|0;m=a[m>>0]|0;d=a[p+2>>0]|0;s=a[p+3>>0]|0;t=a[p+4>>0]|0;a[n>>0]=0;a[n+1>>0]=0;a[n+2>>0]=0;a[n+3>>0]=0;a[n+4>>0]=0;Zd(p,n)|0;a[o>>0]=a[n+1>>0]^m;a[o+1>>0]=a[n+2>>0]^d;a[o+2>>0]=a[n+3>>0]^s;a[o+3>>0]=a[n+4>>0]^t;fq(e+f|0,o|0,c&3|0)|0;f=f|q;b=q+1+b|0}if((b|0)!=(Kc(9,c)|0))Ha(18712,18776,349,18827);if((f|0)==(c|0)){i=r;return}else Ha(19100,18776,350,18827)}function be(a){a=a|0;Yp(a);return}function ce(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=a[b>>0]|0;i=a[b+1>>0]|0;j=a[b+2>>0]|0;k=a[b+3>>0]|0;l=a[b+4>>0]|0;g=a[b+5>>0]|0;h=a[b+6>>0]|0;c=a[b+7>>0]|0;e=0;b=0;do{m=e<<3;b=(d[39691+(i&a[18849+(m|1)>>0]&255)>>0]|0)+(d[39691+(f&a[18849+m>>0]&255)>>0]|0)+(d[39691+(j&a[18849+(m|2)>>0]&255)>>0]|0)+(d[39691+(k&a[18849+(m|3)>>0]&255)>>0]|0)+(d[39691+(l&a[18849+(m|4)>>0]&255)>>0]|0)+(d[39691+(g&a[18849+(m|5)>>0]&255)>>0]|0)+(d[39691+(h&a[18849+(m|6)>>0]&255)>>0]|0)+(d[39691+(c&a[18849+(m|7)>>0]&255)>>0]|0)&1|b<<1&510;e=e+1|0}while((e|0)!=8);return b&255|0}function de(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=d[b>>0]|0;j=a[b+1>>0]|0;k=a[b+2>>0]|0;l=a[b+3>>0]|0;m=a[b+4>>0]|0;g=a[b+5>>0]|0;h=a[b+6>>0]|0;i=a[b+7>>0]|0;c=a[b+8>>0]|0;e=0;b=0;do{n=e<<3;b=((f&1<<7-e|0)!=0&1)+(d[39691+(j&a[18849+n>>0]&255)>>0]|0)+(d[39691+(k&a[18849+(n|1)>>0]&255)>>0]|0)+(d[39691+(l&a[18849+(n|2)>>0]&255)>>0]|0)+(d[39691+(m&a[18849+(n|3)>>0]&255)>>0]|0)+(d[39691+(g&a[18849+(n|4)>>0]&255)>>0]|0)+(d[39691+(h&a[18849+(n|5)>>0]&255)>>0]|0)+(d[39691+(i&a[18849+(n|6)>>0]&255)>>0]|0)+(d[39691+(c&a[18849+(n|7)>>0]&255)>>0]|0)&1|b<<1&510;e=e+1|0}while((e|0)!=8);return b&255|0}function ee(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+32|0;if((i|0)>=(j|0))ba();g=q;p=q+8|0;e=p;f=e+9|0;do{a[e>>0]=0;e=e+1|0}while((e|0)<(f|0));f=de(b)|0;a:do if(!(a[39691+(f&255)>>0]|0)){g=0;h=0;k=0;l=0;m=0;n=0;o=0;e=0;f=0}else{e=0;while(1){if(f<<24>>24==(a[18913+e>>0]|0))break;e=e+1|0;if(e>>>0>=72){g=0;h=0;k=0;l=0;m=0;n=0;o=0;e=0;f=2;break a}}Vp(g,e,8);a[p+(8-(c[g>>2]|0))>>0]=1<>2];g=a[p+1>>0]|0;h=a[p+2>>0]|0;k=a[p+3>>0]|0;l=a[p+4>>0]|0;m=a[p+5>>0]|0;n=a[p+6>>0]|0;o=a[p+7>>0]|0;e=a[p+8>>0]|0;f=1}while(0);a[d>>0]=g^a[b+1>>0];a[d+1>>0]=h^a[b+2>>0];a[d+2>>0]=k^a[b+3>>0];a[d+3>>0]=l^a[b+4>>0];a[d+4>>0]=m^a[b+5>>0];a[d+5>>0]=n^a[b+6>>0];a[d+6>>0]=o^a[b+7>>0];a[d+7>>0]=e^a[b+8>>0];i=q;return f|0}function fe(a){a=a|0;a=Xp(148)|0;c[a>>2]=10;g[a+4>>2]=+Mc(10);c[a+136>>2]=32;c[a+140>>2]=33;c[a+144>>2]=0;return a|0}function ge(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();k=n;m=d&7;h=d-m|0;if((m|0)==(d|0)){g=0;b=0}else{g=0;b=0;do{o=e+g|0;l=f+b|0;a[l>>0]=ce(o)|0;a[l+1>>0]=a[o>>0]|0;a[l+2>>0]=a[o+1>>0]|0;a[l+3>>0]=a[o+2>>0]|0;a[l+4>>0]=a[o+3>>0]|0;a[l+5>>0]=a[o+4>>0]|0;a[l+6>>0]=a[o+5>>0]|0;a[l+7>>0]=a[o+6>>0]|0;a[l+8>>0]=a[o+7>>0]|0;b=b+9|0;g=g+8|0}while(g>>>0>>0)}if(m){h=k;c[h>>2]=0;c[h+4>>2]=0;fq(k|0,e+g|0,d&7|0)|0;a[f+b>>0]=ce(k)|0;h=b+1|0;k=d&7;l=0;do{a[f+(h+l)>>0]=a[e+(l+g)>>0]|0;l=l+1|0}while((l|0)!=(k|0));g=g|m;b=m+1+b|0}if((b|0)!=(Kc(10,d)|0))Ha(18985,19049,286,19078);if((g|0)==(d|0)){i=n;return}else Ha(19100,19049,287,19078)}function he(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();k=m+8|0;h=m;l=b&7;g=b-l|0;if((l|0)==(b|0)){f=0;a=0}else{f=0;a=0;do{ee(d+a|0,e+f|0)|0;a=a+9|0;f=f+8|0}while(f>>>0>>0)}if(l){g=h;c[g>>2]=0;c[g+4>>2]=0;g=b&7;n=g+1|0;eq(k+n|0,0,(n>>>0>8?0:8-g|0)|0)|0;fq(k|0,d+a|0,n|0)|0;ee(k,h)|0;fq(e+f|0,h|0,g|0)|0;f=f|l;a=a+(l+1)|0}if((a|0)!=(Kc(10,b)|0))Ha(18985,19049,338,19118);if((f|0)==(b|0)){i=m;return}else Ha(19100,19049,339,19118)}function ie(a){a=a|0;Yp(a);return}function je(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();f=n+8|0;e=n;if(a>>>0<2){m=c[2348]|0;c[e>>2]=19140;Kp(m,20350,e)|0;kb(1)}if(d>>>0>>0){m=c[2348]|0;c[f>>2]=19140;Kp(m,20418,f)|0;kb(1)}m=Xp(20)|0;c[m+12>>2]=a;k=m+4|0;c[k>>2]=d;l=m+8|0;f=0;while(1){e=_(f,a)|0;if(e>>>0>>0)f=f+1|0;else break}c[l>>2]=f;c[k>>2]=e;k=Xp(e<<2)|0;c[m>>2]=k;if(!e){d=0;d=ke(a,k,d)|0;a=m+16|0;c[a>>2]=d;i=n;return m|0}else f=0;do{if(f>>>0>>0)h=+g[b+(f<<2)>>2];else h=0.0;g[k+(f<<2)>>2]=h;f=f+1|0}while(f>>>0>>0);d=ke(a,k,e)|0;a=m+16|0;c[a>>2]=d;i=n;return m|0}function ke(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();f=p+8|0;e=p;if(!a){o=c[2348]|0;c[e>>2]=19140;Kp(o,20497,e)|0;kb(1)}if(!d){o=c[2348]|0;c[f>>2]=19140;Kp(o,20569,f)|0;kb(1)}n=Xp(28)|0;m=n+12|0;c[m>>2]=a;c[n+4>>2]=d;o=Xp(a<<2)|0;c[n+20>>2]=o;k=(d>>>0)/(a>>>0)|0;l=i;i=i+((1*(k<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();d=k+-1|0;if(!k){e=0;do{c[o+(e<<2)>>2]=yk(l,0)|0;e=e+1|0}while(e>>>0>>0);a=n+8|0;c[a>>2]=k;a=lk(k)|0;b=n+16|0;c[b>>2]=a;b=n+24|0;g[b>>2]=1.0;mk(a);i=p;return n|0}else{h=a;e=0}while(1){f=0;do{c[l+(d-f<<2)>>2]=c[b+((_(h,f)|0)+e<<2)>>2];f=f+1|0}while(k>>>0>f>>>0);c[o+(e<<2)>>2]=yk(l,k)|0;e=e+1|0;if(e>>>0>=a>>>0)break;h=c[m>>2]|0}a=n+8|0;c[a>>2]=k;a=lk(k)|0;b=n+16|0;c[b>>2]=a;b=n+24|0;g[b>>2]=1.0;mk(a);i=p;return n|0}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m+24|0;k=m+16|0;h=m+8|0;g=m;if(b>>>0<2){n=c[2348]|0;c[g>>2]=19140;Kp(n,20637,g)|0;kb(1)}if(!d){n=c[2348]|0;c[h>>2]=19140;Kp(n,20715,h)|0;kb(1)}if(e<0.0|e>1.0){n=c[2348]|0;c[k>>2]=19140;Kp(n,20792,k)|0;kb(1)}if(f<-1.0|f>1.0){n=c[2348]|0;c[l>>2]=19140;Kp(n,20881,l)|0;kb(1)}else{h=_(b<<1,d)|0|1;k=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(a,b,d,e,f,k);g=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(g|0,k|0,(_(d,b)|0)<<3|4|0)|0;n=je(b,g,h)|0;i=m;return n|0}return 0}function me(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+16>>2]|0;d=b+12|0;e=b+20|0;if(c[d>>2]|0){f=0;do{zk(c[(c[e>>2]|0)+(f<<2)>>2]|0);f=f+1|0}while(f>>>0<(c[d>>2]|0)>>>0)}Yp(c[e>>2]|0);pk(c[b+16>>2]|0);Yp(b);Yp(c[a>>2]|0);Yp(a);return}function ne(a){a=a|0;var b=0,d=0,e=0;b=a+12|0;d=a+20|0;if(c[b>>2]|0){e=0;do{zk(c[(c[d>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Yp(c[d>>2]|0);pk(c[a+16>>2]|0);Yp(a);return}function oe(a){a=a|0;mk(c[(c[a+16>>2]|0)+16>>2]|0);return}function pe(a){a=a|0;mk(c[a+16>>2]|0);return}function qe(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();o=n;m=n+8|0;l=a+16|0;ok(c[(c[l>>2]|0)+16>>2]|0,b);f=a+12|0;if(!(c[f>>2]|0)){i=n;return}a=0;while(1){h=c[l>>2]|0;k=d+(a<<2)|0;e=c[h+12>>2]|0;if(e>>>0<=a>>>0){f=4;break}nk(c[h+16>>2]|0,m);Ak(c[(c[h+20>>2]|0)+(a<<2)>>2]|0,c[m>>2]|0,k);g[k>>2]=+g[h+24>>2]*+g[k>>2];a=a+1|0;if(a>>>0>=(c[f>>2]|0)>>>0){f=6;break}}if((f|0)==4){n=c[2348]|0;c[o>>2]=a;c[o+4>>2]=e;Kp(n,20971,o)|0;kb(1)}else if((f|0)==6){i=n;return}}function re(a,b){a=a|0;b=+b;ok(c[a+16>>2]|0,b);return}function se(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;f=k+8|0;e=c[a+12>>2]|0;if(e>>>0>b>>>0){nk(c[a+16>>2]|0,f);Ak(c[(c[a+20>>2]|0)+(b<<2)>>2]|0,c[f>>2]|0,d);g[d>>2]=+g[a+24>>2]*+g[d>>2];i=k;return}else{k=c[2348]|0;c[h>>2]=b;c[h+4>>2]=e;Kp(k,20971,h)|0;kb(1)}}function te(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m+24|0;k=m+16|0;h=m+8|0;g=m;if(!b){n=c[2348]|0;c[g>>2]=19140;Kp(n,21040,g)|0;kb(1)}if(d>>>0<2){n=c[2348]|0;c[h>>2]=19140;Kp(n,21121,h)|0;kb(1)}if(!e){n=c[2348]|0;c[k>>2]=19140;Kp(n,21203,k)|0;kb(1)}if(f<0.0|f>1.0){n=c[2348]|0;c[l>>2]=19140;Kp(n,21276,l)|0;kb(1)}else{h=_(_(b<<1,d)|0,e)|0|1;k=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(a,_(d,b)|0,e,f,0.0,k);g=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(g|0,k|0,(_(_(e,d)|0,b)|0)<<3|4|0)|0;n=ke(b,g,h)|0;i=m;return n|0}return 0}function ue(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();m=s+24|0;l=s+16|0;k=s+8|0;h=s;if(!b){r=c[2348]|0;c[h>>2]=19140;Kp(r,19145,h)|0;kb(1)}if(d>>>0<2){r=c[2348]|0;c[k>>2]=19140;Kp(r,19227,k)|0;kb(1)}if(!e){r=c[2348]|0;c[l>>2]=19140;Kp(r,19310,l)|0;kb(1)}if(f<0.0|f>1.0){r=c[2348]|0;c[m>>2]=19140;Kp(r,19384,m)|0;kb(1)}o=_(_(b<<1,d)|0,e)|0;r=o|1;p=i;i=i+((1*(r<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(a,_(d,b)|0,e,f,0.0,p);q=i;i=i+((1*(r<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();a=p+(o<<2)|0;n=+g[p>>2];d=(_(_(e,d)|0,b)|0)<<1|1;h=p+4|0;k=p+(o+-1<<2)|0;l=q+(o<<2)|0;f=0.0;m=0;do{do if(m)if((m|0)==(o|0)){g[l>>2]=n-+g[k>>2];break}else{g[q+(m<<2)>>2]=+g[p+(m+1<<2)>>2]-+g[p+(m+-1<<2)>>2];break}else g[q>>2]=+g[h>>2]-+g[a>>2];while(0);t=+N(+(+g[p+(m<<2)>>2]*+g[q+(m<<2)>>2]));f=t>f?t:f;m=m+1|0}while((m|0)!=(d|0));h=i;i=i+((1*(r<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();k=0;do{g[h+(k<<2)>>2]=+g[q+(k<<2)>>2]*.05999999865889549/f;k=k+1|0}while((k|0)!=(d|0));b=ke(b,h,r)|0;i=s;return b|0}function ve(a,b,d,e,f){a=+a;b=b|0;d=+d;e=+e;f=f|0;var h=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0;q=i;i=i+48|0;if((i|0)>=(j|0))ba();l=q+32|0;n=q+24|0;m=q+16|0;k=q+8|0;h=q;if(a<=0.0){p=c[2348]|0;c[h>>2]=19140;Kp(p,19470,h)|0;kb(1)}if(!b){p=c[2348]|0;c[k>>2]=19140;Kp(p,19540,k)|0;kb(1)}if(!f){p=c[2348]|0;c[m>>2]=19140;Kp(p,19613,m)|0;kb(1)}if(d<=0.0|d>=.5){p=c[2348]|0;c[n>>2]=19140;Kp(p,19690,n)|0;kb(1)}if(e<=0.0){p=c[2348]|0;c[l>>2]=19140;Kp(p,19751,l)|0;kb(1)}p=Xp(56)|0;g[p+12>>2]=a;g[p+16>>2]=1.0/a;c[p>>2]=b;g[p+8>>2]=d;g[p+4>>2]=e;c[p+44>>2]=f;l=_(b<<1,f)|0;h=l|1;m=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();n=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();o=+(f>>>0);Xe(h,d/o,e,0.0,m);k=(_(b,f)|0)<<1|1;a=0.0;h=0;do{a=a+ +g[m+(h<<2)>>2];h=h+1|0}while((h|0)!=(k|0));a=o/a;h=0;do{g[n+(h<<2)>>2]=a*+g[m+(h<<2)>>2];h=h+1|0}while((h|0)!=(k|0));f=ke(f,n,l)|0;c[p+48>>2]=f;mk(c[f+16>>2]|0);c[p+52>>2]=1;f=p+20|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;i=q;return p|0}function we(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+48>>2]|0;d=b+12|0;e=b+20|0;if(c[d>>2]|0){f=0;do{zk(c[(c[e>>2]|0)+(f<<2)>>2]|0);f=f+1|0}while(f>>>0<(c[d>>2]|0)>>>0)}Yp(c[e>>2]|0);pk(c[b+16>>2]|0);Yp(b);Yp(a);return}function xe(a,b,d,e,f,h,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0;E=i;i=i+32|0;if((i|0)>=(j|0))ba();A=E+24|0;C=E+16|0;B=E+8|0;z=E;y=E+28|0;D=a+28|0;if(!h){C=a+44|0;d=0;B=0;c[e>>2]=d;c[k>>2]=B;e=c[D>>2]|0;k=c[C>>2]|0;k=e>>>0>>0;k=k&1;i=E;return k|0}q=a+32|0;r=a+48|0;m=a+44|0;s=a+52|0;t=a+36|0;u=a+20|0;v=a+24|0;w=a+40|0;p=a+16|0;n=0;x=0;a:while(1){l=c[D>>2]|0;b:while(1){if(!l)if(+g[q>>2]==0.0){if((n|0)==(d|0)){l=d;a=x;o=25;break a}ok(c[(c[r>>2]|0)+16>>2]|0,+g[b+(n<<2)>>2]);l=c[D>>2]|0;n=n+1|0}else l=0;a=c[m>>2]|0;if(l>>>0>=a>>>0)do{if((n|0)==(d|0)){l=d;a=x;o=25;break a}g[u>>2]=+g[u>>2]+-1.0;g[v>>2]=+g[v>>2]-+(a>>>0);c[D>>2]=l-a;ok(c[(c[r>>2]|0)+16>>2]|0,+g[b+(n<<2)>>2]);n=n+1|0;l=c[D>>2]|0;a=c[m>>2]|0}while(l>>>0>=a>>>0);switch(c[s>>2]|0){case 0:{l=n;o=16;break b}case 1:break;default:{o=24;break a}}o=c[r>>2]|0;a=c[o+12>>2]|0;if(a>>>0<=l>>>0){o=19;break a}nk(c[o+16>>2]|0,y);Ak(c[(c[o+20>>2]|0)+(l<<2)>>2]|0,c[y>>2]|0,t);g[t>>2]=+g[o+24>>2]*+g[t>>2];a=c[D>>2]|0;l=c[m>>2]|0;if((a|0)!=(l+-1|0)){l=a;o=20;break}c[s>>2]=0;c[D>>2]=l}if((o|0)==16){a=c[r>>2]|0;if(!(c[a+12>>2]|0)){o=17;break}nk(c[a+16>>2]|0,y);Ak(c[c[a+20>>2]>>2]|0,c[y>>2]|0,w);F=+g[a+24>>2]*+g[w>>2];g[w>>2]=F;G=+g[q>>2];g[f+(x<<2)>>2]=(1.0-G)*+g[t>>2]+G*F;F=+g[p>>2]+ +g[u>>2];g[u>>2]=F;F=F*+((c[m>>2]|0)>>>0);g[v>>2]=F;o=~~+M(+F);c[D>>2]=o;g[q>>2]=F-+(o|0);c[s>>2]=1}else if((o|0)==20){o=c[r>>2]|0;a=c[o+12>>2]|0;l=l+1|0;if(a>>>0<=l>>>0){o=21;break}nk(c[o+16>>2]|0,y);Ak(c[(c[o+20>>2]|0)+(l<<2)>>2]|0,c[y>>2]|0,w);G=+g[o+24>>2]*+g[w>>2];g[w>>2]=G;F=+g[q>>2];g[f+(x<<2)>>2]=(1.0-F)*+g[t>>2]+F*G;G=+g[p>>2]+ +g[u>>2];g[u>>2]=G;G=G*+((c[m>>2]|0)>>>0);g[v>>2]=G;l=~~+M(+G);c[D>>2]=l;g[q>>2]=G-+(l|0);l=n}a=x+1|0;if(a>>>0>>0){n=l;x=a}else{o=25;break}}if((o|0)==17){E=c[2348]|0;c[z>>2]=0;c[z+4>>2]=0;Kp(E,20971,z)|0;kb(1)}else if((o|0)==19){E=c[2348]|0;c[B>>2]=l;c[B+4>>2]=a;Kp(E,20971,B)|0;kb(1)}else if((o|0)==21){E=c[2348]|0;c[C>>2]=l;c[C+4>>2]=a;Kp(E,20971,C)|0;kb(1)}else if((o|0)==24){E=c[2348]|0;c[A>>2]=19140;Kp(E,19834,A)|0;kb(1)}else if((o|0)==25){c[e>>2]=l;c[k>>2]=a;e=c[D>>2]|0;k=c[m>>2]|0;k=e>>>0>>0;k=k&1;i=E;return k|0}return 0}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h+8|0;e=h;if(!d){g=c[2348]|0;c[e>>2]=19885;Kp(g,19890,e)|0;kb(1)}if(!a){g=c[2348]|0;c[f>>2]=19885;Kp(g,19957,f)|0;kb(1)}g=Xp(20)|0;c[g+4>>2]=d;c[g+8>>2]=a;e=Xp(d<<2)|0;c[g>>2]=e;f=d+-1|0;a=0;do{c[e+(a<<2)>>2]=c[b+(f-a<<2)>>2];a=a+1|0}while(a>>>0>>0);b=qk(d)|0;c[g+12>>2]=b;c[g+16>>2]=vk(e,d)|0;rk(b);i=h;return g|0}function ze(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m+24|0;k=m+16|0;h=m+8|0;g=m;if(b>>>0<2){n=c[2348]|0;c[g>>2]=19885;Kp(n,20028,g)|0;kb(1)}if(!d){n=c[2348]|0;c[h>>2]=19885;Kp(n,20106,h)|0;kb(1)}if(e<0.0|e>1.0){n=c[2348]|0;c[k>>2]=19885;Kp(n,20179,k)|0;kb(1)}if(f<-1.0|f>1.0){n=c[2348]|0;c[l>>2]=19885;Kp(n,20264,l)|0;kb(1)}else{h=_(b<<1,d)|0|1;k=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(a,b,d,e,f,k);g=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(g|0,k|0,(_(d,b)|0)<<3|4|0)|0;n=ye(b,g,h)|0;i=m;return n|0}return 0}function Ae(a){a=a|0;uk(c[a+12>>2]|0);wk(c[a+16>>2]|0);Yp(c[a>>2]|0);Yp(a);return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();f=n+16|0;m=n+8|0;g=n;h=a+8|0;if(!(c[h>>2]|0)){i=n;return}k=a+12|0;l=g+4|0;a=a+16|0;e=0;do{o=c[k>>2]|0;p=c[b+(e<<3)+4>>2]|0;c[g>>2]=c[b+(e<<3)>>2];c[l>>2]=p;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];tk(o,f);if(!e){sk(c[k>>2]|0,m);xk(c[a>>2]|0,c[m>>2]|0,d)}e=e+1|0}while(e>>>0<(c[h>>2]|0)>>>0);i=n;return}function Ce(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();f=n+8|0;e=n;if(a>>>0<2){m=c[2348]|0;c[e>>2]=19885;Kp(m,20350,e)|0;kb(1)}if(d>>>0>>0){m=c[2348]|0;c[f>>2]=19885;Kp(m,20418,f)|0;kb(1)}m=Xp(20)|0;c[m+12>>2]=a;k=m+4|0;c[k>>2]=d;l=m+8|0;f=0;while(1){e=_(f,a)|0;if(e>>>0>>0)f=f+1|0;else break}c[l>>2]=f;c[k>>2]=e;k=Xp(e<<2)|0;c[m>>2]=k;if(!e){d=0;d=De(a,k,d)|0;a=m+16|0;c[a>>2]=d;i=n;return m|0}else f=0;do{if(f>>>0>>0)h=+g[b+(f<<2)>>2];else h=0.0;g[k+(f<<2)>>2]=h;f=f+1|0}while(f>>>0>>0);d=De(a,k,e)|0;a=m+16|0;c[a>>2]=d;i=n;return m|0}function De(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+16|0;if((i|0)>=(j|0))ba();f=p+8|0;e=p;if(!a){o=c[2348]|0;c[e>>2]=19885;Kp(o,20497,e)|0;kb(1)}if(!d){o=c[2348]|0;c[f>>2]=19885;Kp(o,20569,f)|0;kb(1)}n=Xp(28)|0;m=n+12|0;c[m>>2]=a;c[n+4>>2]=d;o=Xp(a<<2)|0;c[n+20>>2]=o;k=(d>>>0)/(a>>>0)|0;l=i;i=i+((1*(k<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();d=k+-1|0;if(!k){e=0;do{c[o+(e<<2)>>2]=vk(l,0)|0;e=e+1|0}while(e>>>0>>0);a=n+8|0;c[a>>2]=k;a=qk(k)|0;b=n+16|0;c[b>>2]=a;b=n+24|0;g[b>>2]=1.0;rk(a);i=p;return n|0}else{h=a;e=0}while(1){f=0;do{c[l+(d-f<<2)>>2]=c[b+((_(h,f)|0)+e<<2)>>2];f=f+1|0}while(k>>>0>f>>>0);c[o+(e<<2)>>2]=vk(l,k)|0;e=e+1|0;if(e>>>0>=a>>>0)break;h=c[m>>2]|0}a=n+8|0;c[a>>2]=k;a=qk(k)|0;b=n+16|0;c[b>>2]=a;b=n+24|0;g[b>>2]=1.0;rk(a);i=p;return n|0}function Ee(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m+24|0;k=m+16|0;h=m+8|0;g=m;if(b>>>0<2){n=c[2348]|0;c[g>>2]=19885;Kp(n,20637,g)|0;kb(1)}if(!d){n=c[2348]|0;c[h>>2]=19885;Kp(n,20715,h)|0;kb(1)}if(e<0.0|e>1.0){n=c[2348]|0;c[k>>2]=19885;Kp(n,20792,k)|0;kb(1)}if(f<-1.0|f>1.0){n=c[2348]|0;c[l>>2]=19885;Kp(n,20881,l)|0;kb(1)}else{h=_(b<<1,d)|0|1;k=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(a,b,d,e,f,k);g=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(g|0,k|0,(_(d,b)|0)<<3|4|0)|0;n=Ce(b,g,h)|0;i=m;return n|0}return 0}function Fe(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a+16>>2]|0;d=b+12|0;e=b+20|0;if(c[d>>2]|0){f=0;do{wk(c[(c[e>>2]|0)+(f<<2)>>2]|0);f=f+1|0}while(f>>>0<(c[d>>2]|0)>>>0)}Yp(c[e>>2]|0);uk(c[b+16>>2]|0);Yp(b);Yp(c[a>>2]|0);Yp(a);return}function Ge(a){a=a|0;var b=0,d=0,e=0;b=a+12|0;d=a+20|0;if(c[b>>2]|0){e=0;do{wk(c[(c[d>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Yp(c[d>>2]|0);uk(c[a+16>>2]|0);Yp(a);return}function He(a){a=a|0;rk(c[(c[a+16>>2]|0)+16>>2]|0);return}function Ie(a){a=a|0;rk(c[a+16>>2]|0);return}function Je(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();k=m+16|0;n=m;f=m+8|0;l=a+16|0;e=c[b+4>>2]|0;h=c[(c[l>>2]|0)+16>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=e;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];tk(h,k);h=a+12|0;if(!(c[h>>2]|0)){i=m;return}a=0;while(1){e=c[l>>2]|0;f=d+(a<<3)|0;b=c[e+12>>2]|0;if(b>>>0<=a>>>0){e=4;break}sk(c[e+16>>2]|0,k);xk(c[(c[e+20>>2]|0)+(a<<2)>>2]|0,c[k>>2]|0,f);p=+g[e+24>>2];e=d+(a<<3)+4|0;o=p*+g[e>>2];g[f>>2]=p*+g[f>>2];g[e>>2]=o;a=a+1|0;if(a>>>0>=(c[h>>2]|0)>>>0){e=6;break}}if((e|0)==4){m=c[2348]|0;c[n>>2]=a;c[n+4>>2]=b;Kp(m,20971,n)|0;kb(1)}else if((e|0)==6){i=m;return}}function Ke(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();e=d+8|0;f=d;a=c[a+16>>2]|0;g=c[b+4>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=g;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];tk(a,e);i=d;return}function Le(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0.0,m=0.0;k=i;i=i+16|0;if((i|0)>=(j|0))ba();h=k;f=k+8|0;e=c[a+12>>2]|0;if(e>>>0>b>>>0){sk(c[a+16>>2]|0,f);xk(c[(c[a+20>>2]|0)+(b<<2)>>2]|0,c[f>>2]|0,d);m=+g[a+24>>2];h=d+4|0;l=m*+g[h>>2];g[d>>2]=m*+g[d>>2];g[h>>2]=l;i=k;return}else{k=c[2348]|0;c[h>>2]=b;c[h+4>>2]=e;Kp(k,20971,h)|0;kb(1)}}function Me(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();l=m+24|0;k=m+16|0;h=m+8|0;g=m;if(!b){n=c[2348]|0;c[g>>2]=19885;Kp(n,21040,g)|0;kb(1)}if(d>>>0<2){n=c[2348]|0;c[h>>2]=19885;Kp(n,21121,h)|0;kb(1)}if(!e){n=c[2348]|0;c[k>>2]=19885;Kp(n,21203,k)|0;kb(1)}if(f<0.0|f>1.0){n=c[2348]|0;c[l>>2]=19885;Kp(n,21276,l)|0;kb(1)}else{h=_(_(b<<1,d)|0,e)|0|1;k=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(a,_(d,b)|0,e,f,0.0,k);g=i;i=i+((1*(h<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();fq(g|0,k|0,(_(_(e,d)|0,b)|0)<<3|4|0)|0;n=De(b,g,h)|0;i=m;return n|0}return 0}function Ne(a,b){a=a|0;b=+b;g[a+24>>2]=b;return}function Oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();h=q+8|0;f=q;if(!b){p=c[2348]|0;c[f>>2]=19885;Kp(p,21361,f)|0;kb(1)}if(!e){p=c[2348]|0;c[h>>2]=19885;Kp(p,21422,h)|0;kb(1)}p=Xp(36)|0;c[p+16>>2]=b;l=p+20|0;c[l>>2]=e;o=e>>>0>b>>>0?e:b;n=p+12|0;c[n>>2]=o;c[p+24>>2]=0;k=p+4|0;c[k>>2]=Xp(e<<2)|0;f=Xp(b<<2)|0;c[p>>2]=f;m=+g[d>>2];h=0;do{g[f+(h<<2)>>2]=+g[a+(h<<2)>>2]/m;h=h+1|0}while(h>>>0>>0);e=c[k>>2]|0;f=c[l>>2]|0;h=0;do{g[e+(h<<2)>>2]=+g[d+(h<<2)>>2]/m;h=h+1|0}while(h>>>0>>0);e=Xp(o<<3)|0;c[p+8>>2]=e;if(!o){i=q;return p|0}f=c[n>>2]|0;h=0;do{g[e+(h<<3)>>2]=0.0;g[e+(h<<3)+4>>2]=0.0;h=h+1|0}while(h>>>0>>0);i=q;return p|0}function Pe(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;var k=0,l=0,m=0,n=0,o=0,p=0;p=i;k=d<<((b|1|0)==3&1);o=k&1;n=(c|0)==0;o=((k-o|0)>>>1)+o|0;k=n?o*3|0:k+1|0;l=i;i=i+((1*(k<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();m=i;i=i+((1*(k<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Bf(a,b,c,d,e,f,g,h,l,m);b=i;i=i+((1*(k<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();c=i;i=i+((1*(k<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(k|0){d=k<<2;fq(b|0,l|0,d|0)|0;fq(c|0,m|0,d|0)|0}if(n){o=Qe(b,c,o)|0;i=p;return o|0}else{o=Oe(b,k,c,k)|0;i=p;return o|0}return 0}function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=i;i=i+32|0;if((i|0)>=(j|0))ba();e=t;r=t+16|0;s=t+4|0;if(!d){q=c[2348]|0;c[e>>2]=19885;Kp(q,21485,e)|0;kb(1)}p=Xp(36)|0;c[p+24>>2]=1;c[p+32>>2]=d;q=Xp(d<<2)|0;c[p+28>>2]=q;c[p+12>>2]=d<<1;e=d*12|0;n=Xp(e)|0;c[p>>2]=n;o=Xp(e)|0;c[p+4>>2]=o;fq(n|0,a|0,e|0)|0;fq(o|0,b|0,e|0)|0;e=s+4|0;b=s+8|0;a=r+4|0;f=r+8|0;k=0;do{l=k*3|0;h=n+(l<<2)|0;l=o+(l<<2)|0;c[r>>2]=c[l>>2];c[r+4>>2]=c[l+4>>2];c[r+8>>2]=c[l+8>>2];c[s>>2]=c[h>>2];c[s+4>>2]=c[h+4>>2];c[s+8>>2]=c[h+8>>2];h=Xp(96)|0;u=+g[r>>2];g[h>>2]=+g[s>>2]/u;g[h+4>>2]=+g[e>>2]/u;g[h+8>>2]=+g[b>>2]/u;g[h+12>>2]=u/u;g[h+16>>2]=+g[a>>2]/u;g[h+20>>2]=+g[f>>2]/u;l=h+24|0;m=l+72|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(m|0));c[q+(k<<2)>>2]=h;k=k+1|0}while(k>>>0>>0);i=t;return p|0}function Re(a){a=a|0;var b=0,d=0,e=0;Yp(c[a>>2]|0);Yp(c[a+4>>2]|0);if((c[a+24>>2]|0)!=1){Yp(c[a+8>>2]|0);Yp(a);return}b=a+32|0;d=a+28|0;if(c[b>>2]|0){e=0;do{Yp(c[(c[d>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Yp(c[d>>2]|0);Yp(a);return}function Se(a){a=a|0;var b=0,d=0,e=0,f=0;if((c[a+24>>2]|0)==1){f=a+32|0;if(!(c[f>>2]|0))return;a=a+28|0;b=0;do{d=(c[(c[a>>2]|0)+(b<<2)>>2]|0)+24|0;e=d+72|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));b=b+1|0}while(b>>>0<(c[f>>2]|0)>>>0);return}else{d=a+12|0;if(!(c[d>>2]|0))return;a=a+8|0;b=0;do{f=c[a>>2]|0;g[f+(b<<3)>>2]=0.0;g[f+(b<<3)+4>>2]=0.0;b=b+1|0}while(b>>>0<(c[d>>2]|0)>>>0);return}}function Te(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0;l=c[b>>2]|0;j=c[b+4>>2]|0;if(c[a+24>>2]|0){i=a+32|0;if(!(c[i>>2]|0)){h=0;b=0}else{f=(c[k>>2]=j,+g[k>>2]);b=a+28|0;h=0;e=(c[k>>2]=l,+g[k>>2]);do{a=c[(c[b>>2]|0)+(h<<2)>>2]|0;x=a+80|0;u=c[x>>2]|0;w=a+84|0;t=c[w>>2]|0;c[a+88>>2]=u;c[a+92>>2]=t;j=a+72|0;v=c[j>>2]|0;l=a+76|0;o=+g[l>>2];c[x>>2]=v;g[w>>2]=o;p=+g[a+16>>2];s=(c[k>>2]=v,+g[k>>2]);q=+g[a+20>>2];r=(c[k>>2]=u,+g[k>>2]);m=(c[k>>2]=t,+g[k>>2]);e=e-s*p-r*q;q=f-o*p-m*q;g[j>>2]=e;g[l>>2]=q;p=+g[a>>2];n=+g[a+4>>2];f=+g[a+8>>2];e=e*p+s*n+r*f;f=q*p+o*n+m*f;h=h+1|0}while(h>>>0<(c[i>>2]|0)>>>0);h=(g[k>>2]=e,c[k>>2]|0);b=(g[k>>2]=f,c[k>>2]|0)}c[d>>2]=h;c[d+4>>2]=b;return}b=c[a+12>>2]|0;h=b+-1|0;if(h|0){i=a+8|0;while(1){w=b+-2|0;b=c[i>>2]|0;x=c[b+(w<<3)+4>>2]|0;c[b+(h<<3)>>2]=c[b+(w<<3)>>2];c[b+(h<<3)+4>>2]=x;b=h+-1|0;if(!b)break;else{x=h;h=b;b=x}}}f=(c[k>>2]=l,+g[k>>2]);e=(c[k>>2]=j,+g[k>>2]);i=c[a+20>>2]|0;if(i>>>0>1){j=c[a+4>>2]|0;h=a+8|0;b=c[h>>2]|0;l=1;do{s=+g[j+(l<<2)>>2];f=f-s*+g[b+(l<<3)>>2];e=e-s*+g[b+(l<<3)+4>>2];l=l+1|0}while((l|0)!=(i|0))}else{b=a+8|0;h=b;b=c[b>>2]|0}g[b>>2]=f;g[b+4>>2]=e;j=c[a+16>>2]|0;if(!j){f=0.0;e=0.0}else{i=c[a>>2]|0;b=c[h>>2]|0;h=0;f=0.0;e=0.0;do{s=+g[i+(h<<2)>>2];f=f+s*+g[b+(h<<3)>>2];e=e+s*+g[b+(h<<3)+4>>2];h=h+1|0}while((h|0)!=(j|0))}g[d>>2]=f;g[d+4>>2]=e;return}function Ue(a,b){a=a|0;b=+b;return Pe(0,0,0,a,b,0.0,.10000000149011612,60.0)|0}function Ve(a){a=+a;var b=0,c=0,d=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();d=b+8|0;c=b;g[d>>2]=1.0;g[d+4>>2]=-1.0;g[c>>2]=1.0;g[c+4>>2]=a+-1.0;c=Oe(d,2,c,2)|0;i=b;return c|0}function We(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,k=0.0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n+8|0;d=n;f=a*14.260000228881836;e=+(b>>>0);if(a>.5|a<=0.0){b=c[2348]|0;h[d>>3]=a;Kp(b,21629,d)|0;kb(1)}else{g=.009999999776482582;k=200.0;l=0}while(1){a=(k+g)*.5;if(a<=0.0){b=4;break}b=(a+-7.949999809265137)/f>>0>=20){b=6;break}else{g=b?a:g;k=b?k:a}}if((b|0)==4){n=c[2348]|0;h[m>>3]=a;Kp(n,21566,m)|0;kb(1)}else if((b|0)==6){i=n;return +a}return +(0.0)}function Xe(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=f|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();l=o+8|0;k=o;if(e<-.5|e>.5){p=c[2348]|0;h[k>>3]=e;Kp(p,21694,k)|0;kb(1)}if(b<0.0|b>.5){p=c[2348]|0;h[l>>3]=b;Kp(p,21763,l)|0;kb(1)}if(!a){Qp(21843,71,1,c[2348]|0)|0;kb(1)}d=+N(+d);if(!(d>50.0))if(d>21.0){n=d+-21.0;n=n*.07885999977588654+ +P(+n,.4000000059604645)*.5842}else n=0.0;else n=(d+-8.699999809265137)*.11020000278949738;m=+((a+-1|0)>>>0)*.5;d=b*2.0;k=0;do{b=+Qh(d*(+(k>>>0)-m+e));g[f+(k<<2)>>2]=b*+Uh(k,a,n,e);k=k+1|0}while((k|0)!=(a|0));i=o;return}function Ye(a,b,d,e,f,k){a=a|0;b=b|0;d=d|0;e=+e;f=+f;k=k|0;var l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=i;i=i+80|0;if((i|0)>=(j|0))ba();A=E+16|0;z=E+8|0;m=E;x=E+56|0;y=E+44|0;B=E+32|0;C=E+20|0;t=_(b<<1,d)|0|1;u=+(b>>>0);v=.5/u;w=e/u;n=w*14.260000228881836;o=+(t>>>0);if(w>.5|w<=0.0){F=c[2348]|0;h[m>>3]=w;Kp(F,21629,m)|0;kb(1)}else{p=.009999999776482582;q=200.0;r=0}while(1){l=(p+q)*.5;if(l<=0.0){D=4;break}m=(l+-7.949999809265137)/n>>0>=20){s=l;break}else{p=m?l:p;q=m?q:l}}if((D|0)==4){F=c[2348]|0;h[z>>3]=l;Kp(F,21566,z)|0;kb(1)}g[x>>2]=0.0;w=w*.5;g[x+4>>2]=v-w;g[x+8>>2]=v;g[x+12>>2]=v;g[x+16>>2]=v+w;g[x+20>>2]=.5;g[y>>2]=u;g[y+4>>2]=u*.5;g[y+8>>2]=0.0;c[B>>2]=c[133];c[B+4>>2]=c[134];c[B+8>>2]=c[135];c[C>>2]=0;c[C+4>>2]=0;c[C+8>>2]=0;do switch(a|0){case 1:{Xe(t,v,s,f,k);i=E;return}case 2:{$e(t,3,x,y,B,C,0,k);i=E;return}case 3:{Cf(b,d,e,f,k);i=E;return}case 4:{mf(b,d,e,f,k);i=E;return}case 5:{of(b,d,e,f,k);i=E;return}case 6:{qf(b,d,e,f,k);i=E;return}case 7:{Hf(b,d,e,f,k);i=E;return}case 8:{Df(b,d,e,f,k);i=E;return}case 9:{If(b,d,e,f,k);i=E;return}case 10:{uf(b,d,e,f,k);i=E;return}case 11:{sf(b,d,e,f,k);i=E;return}case 12:{tf(b,d,e,f,k);i=E;return}case 13:{nf(b,d,e,f,k);i=E;return}case 14:{pf(b,d,e,f,k);i=E;return}case 15:{rf(b,d,e,f,k);i=E;return}default:{F=c[2348]|0;c[A>>2]=a;Kp(F,21915,A)|0;kb(1)}}while(0)}function Ze(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;n=_(b<<1,c)|0|1;i=0;f=0.0;do{l=+g[a+(i<<2)>>2];f=f+l*l;i=i+1|0}while((i|0)!=(n|0));l=f;m=c<<1;if(!m){l=0.0;h=0.0;j=+(m>>>0);j=h/j;j=+O(+j);g[d>>2]=j;g[e>>2]=l;return}else{k=1;h=0.0;f=0.0}do{i=_(k,b)|0;i=(i|0)>-1?i:0-i|0;if(i>>>0>>0){c=i;j=0.0;do{j=j+ +g[a+(c<<2)>>2]*+g[a+(c-i<<2)>>2];c=c+1|0}while((c|0)!=(n|0))}else j=0.0;j=+N(+(j/l));f=f+j*j;h=(k|0)==1|j>h?j:h;k=k+1|0}while(k>>>0<=m>>>0);l=+(m>>>0);l=f/l;l=+O(+l);g[d>>2]=l;g[e>>2]=h;return}function _e(a){a=a|0;if(dp(a,21988)|0)if(dp(a,21995)|0)if(dp(a,21998)|0)if(dp(a,22003)|0)if(dp(a,22008)|0)if(dp(a,22014)|0)if(dp(a,22023)|0)if(dp(a,22032)|0)if(dp(a,22040)|0)if(dp(a,22046)|0)if(dp(a,22050)|0)if(dp(a,22057)|0)if(dp(a,22064)|0)if(!(dp(a,22070)|0))a=14;else{a=(dp(a,22077)|0)==0;a=a?15:0}else a=13;else a=12;else a=11;else a=10;else a=9;else a=8;else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;return a|0}function $e(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;f=af(a,b,c,d,e,f,g)|0;cf(f,h);gf(f);return}function af(a,b,d,e,f,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0.0;m=b<<1;if(m){k=1;l=0;do{o=+g[d+(l<<2)>>2];k=o<=.5&o>=0.0&1&k;l=l+1|0}while((l|0)!=(m|0));if(m>>>0>1){o=+g[d>>2];l=1;do{t=o;o=+g[d+(l<<2)>>2];k=o>=t&k;l=l+1|0}while((l|0)!=(m|0))}}else k=1;n=(b|0)==0;if(n)l=1;else{m=0;l=1;do{l=+g[f+(m<<2)>>2]>0.0&l;m=m+1|0}while((m|0)!=(b|0))}if(!k){Qp(22087,40,1,c[2348]|0)|0;kb(1)}if(!l){Qp(22128,61,1,c[2348]|0)|0;kb(1)}if(n){Qp(22190,54,1,c[2348]|0)|0;kb(1)}s=Xp(104)|0;c[s>>2]=a;q=a&1;c[s+4>>2]=q;p=(a-q|0)>>>1;c[s+8>>2]=p;q=p+q|0;p=s+12|0;c[p>>2]=q;c[s+28>>2]=j;c[s+88>>2]=Xp((q<<2)+4|0)|0;q=(q<<3)+8|0;c[s+64>>2]=Xp(q)|0;c[s+68>>2]=Xp(q)|0;c[s+72>>2]=Xp(q)|0;q=s+16|0;c[q>>2]=b;r=s+32|0;c[r>>2]=Xp(b<<4)|0;k=b<<3;n=s+36|0;c[n>>2]=Xp(k)|0;j=s+40|0;c[j>>2]=Xp(k)|0;k=Xp(b<<2)|0;m=s+44|0;c[m>>2]=k;if(!i){c[k>>2]=0;k=c[q>>2]|0;if(k>>>0>1){l=1;do{c[(c[m>>2]|0)+(l<<2)>>2]=0;l=l+1|0;k=c[q>>2]|0}while(l>>>0>>0)}}else{c[k>>2]=c[i>>2];k=c[q>>2]|0;if(k>>>0>1){l=1;do{c[(c[m>>2]|0)+(l<<2)>>2]=c[i+(l<<2)>>2];l=l+1|0;k=c[q>>2]|0}while(l>>>0>>0)}}if(k|0){a=c[r>>2]|0;n=c[n>>2]|0;m=c[j>>2]|0;if(!f){l=0;do{f=l<<1;h[a+(f<<3)>>3]=+g[d+(f<<2)>>2];f=f|1;h[a+(f<<3)>>3]=+g[d+(f<<2)>>2];h[n+(l<<3)>>3]=+g[e+(l<<2)>>2];h[m+(l<<3)>>3]=1.0;l=l+1|0}while(l>>>0>>0)}else{l=0;do{i=l<<1;h[a+(i<<3)>>3]=+g[d+(i<<2)>>2];i=i|1;h[a+(i<<3)>>3]=+g[d+(i<<2)>>2];h[n+(l<<3)>>3]=+g[e+(l<<2)>>2];h[m+(l<<3)>>3]=+g[f+(l<<2)>>2];l=l+1|0}while(l>>>0>>0)}}c[s+24>>2]=20;a=s+20|0;c[a>>2]=0;o=.5/+(((c[p>>2]|0)*20|0)>>>0);n=c[q>>2]|0;if(!n){d=0;f=Xp(d)|0;e=s+48|0;c[e>>2]=f;e=Xp(d)|0;f=s+52|0;c[f>>2]=e;f=Xp(d)|0;e=s+56|0;c[e>>2]=f;d=Xp(d)|0;e=s+60|0;c[e>>2]=d;e=s+96|0;c[e>>2]=0;e=s+100|0;c[e>>2]=0;bf(s);return s|0}l=c[r>>2]|0;k=0;m=0;do{e=m<<1;k=(~~((+h[l+((e|1)<<3)>>3]-+h[l+(e<<3)>>3])/o+1.0)>>>0)+k|0;m=m+1|0}while(m>>>0>>0);c[a>>2]=k;d=k<<3;f=Xp(d)|0;e=s+48|0;c[e>>2]=f;e=Xp(d)|0;f=s+52|0;c[f>>2]=e;f=Xp(d)|0;e=s+56|0;c[e>>2]=f;d=Xp(d)|0;e=s+60|0;c[e>>2]=d;e=s+96|0;c[e>>2]=0;e=s+100|0;c[e>>2]=0;bf(s);return s|0}function bf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+16|0;if((i|0)>=(j|0))ba();A=D;x=.5/+((_(c[a+12>>2]|0,c[a+24>>2]|0)|0)>>>0);y=a+16|0;a:do if(!(c[y>>2]|0)){B=a+28|0;C=0}else{m=a+32|0;n=a+28|0;o=a+48|0;p=a+96|0;q=a+36|0;r=a+52|0;s=a+44|0;t=a+40|0;u=a+56|0;v=a+100|0;z=0;d=0;b:while(1){l=z<<1;f=c[m>>2]|0;g=+h[f+(l<<3)>>3];w=+h[f+((l|1)<<3)>>3];if((z|0)==0?(c[n>>2]|0)!=0:0)g=g>>0;e=(e|0)==0?1:e;f=0;l=d;while(1){k=g+x*+(f>>>0);h[(c[o>>2]|0)+(l<<3)>>3]=k;b=c[p>>2]|0;if(!b){h[(c[r>>2]|0)+(l<<3)>>3]=+h[(c[q>>2]|0)+(z<<3)>>3];b=c[(c[s>>2]|0)+(z<<2)>>2]|0;switch(b|0){case 0:{k=1.0;break}case 1:{k=+X(+(x*(+(f>>>0)*2.0)));break}case 2:{k=x*(+(f>>>0)*2.700000047683716)+1.0;break}default:break b}h[(c[u>>2]|0)+(l<<3)>>3]=k*+h[(c[t>>2]|0)+(z<<3)>>3]}else sb[b&0](k,c[v>>2]|0,(c[r>>2]|0)+(l<<3)|0,(c[u>>2]|0)+(l<<3)|0)|0;d=l+1|0;f=f+1|0;if(f>>>0>=e>>>0){b=l;break}else l=d}l=c[y>>2]|0;h[(c[o>>2]|0)+(b<<3)>>3]=w;z=z+1|0;if(z>>>0>=l>>>0){B=n;C=d;break a}}z=c[2348]|0;c[A>>2]=b;Kp(z,22245,A)|0;kb(1)}while(0);c[a+20>>2]=C;d=(c[a+4>>2]|0)==0;if(!(c[B>>2]|0)){if((C|0)==0|d^1){i=D;return}e=c[a+48>>2]|0;f=c[a+52>>2]|0;b=c[a+56>>2]|0;d=0;do{a=e+(d<<3)|0;x=+Q(+(+h[a>>3]*3.141592653589793));B=f+(d<<3)|0;h[B>>3]=+h[B>>3]/x;x=+Q(+(+h[a>>3]*3.141592653589793));a=b+(d<<3)|0;h[a>>3]=x*+h[a>>3];d=d+1|0}while(d>>>0>>0);i=D;return}b=(C|0)!=0;if(d){if(!b){i=D;return}e=c[a+48>>2]|0;f=c[a+52>>2]|0;b=c[a+56>>2]|0;d=0;do{a=e+(d<<3)|0;x=+R(+(+h[a>>3]*3.141592653589793));B=f+(d<<3)|0;h[B>>3]=+h[B>>3]/x;x=+R(+(+h[a>>3]*3.141592653589793));a=b+(d<<3)|0;h[a>>3]=x*+h[a>>3];d=d+1|0}while(d>>>0>>0);i=D;return}else{if(!b){i=D;return}e=c[a+48>>2]|0;f=c[a+52>>2]|0;b=c[a+56>>2]|0;d=0;do{a=e+(d<<3)|0;x=+R(+(+h[a>>3]*6.283185307179586));B=f+(d<<3)|0;h[B>>3]=+h[B>>3]/x;x=+R(+(+h[a>>3]*6.283185307179586));a=b+(d<<3)|0;h[a>>3]=x*+h[a>>3];d=d+1|0}while(d>>>0>>0);i=D;return}}function cf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;v=a+12|0;d=c[v>>2]|0;t=a+20|0;u=a+88|0;if((d|0)!=-1){f=c[u>>2]|0;e=0;do{c[f+(e<<2)>>2]=((_((c[t>>2]|0)+-1|0,e)|0)>>>0)/(d>>>0)|0;e=e+1|0;d=c[v>>2]|0}while(e>>>0<(d+1|0)>>>0)}m=a+92|0;n=a+60|0;o=a+48|0;p=a+64|0;q=a+72|0;r=a+68|0;k=a+56|0;l=a+52|0;s=0;while(1){df(a);if(c[t>>2]|0){d=0;do{i=+Q(+(+h[(c[o>>2]|0)+(d<<3)>>3]*6.283185307179586));i=+Lh(c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,i,(c[v>>2]|0)+1|0);h[(c[n>>2]|0)+(d<<3)>>3]=+h[(c[k>>2]|0)+(d<<3)>>3]*(+h[(c[l>>2]|0)+(d<<3)>>3]-i);d=d+1|0}while(d>>>0<(c[t>>2]|0)>>>0)}ef(a);if(!(c[m>>2]|0)){d=12;break}d=c[v>>2]|0;if((d|0)==-1){i=0.0;g=0.0}else{e=c[u>>2]|0;f=c[n>>2]|0;i=0.0;g=0.0;j=0;while(1){w=+N(+(+h[f+(c[e+(j<<2)>>2]<<3)>>3]));x=(j|0)==0;g=x|wi?w:i;if((j|0)==(d|0))break;else j=j+1|0}}s=s+1|0;if(!(s>>>0<40?!((i-g)/i<1.0000000474974513e-03):0)){d=12;break}}if((d|0)==12){ff(a,b);return}}function df(a){a=a|0;var b=0.0,d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0;k=a+12|0;f=(c[k>>2]|0)+1|0;if(!f){f=0;d=c[a+64>>2]|0}else{g=c[a+88>>2]|0;i=c[a+48>>2]|0;d=c[a+64>>2]|0;j=0;do{h[d+(j<<3)>>3]=+Q(+(+h[i+(c[g+(j<<2)>>2]<<3)>>3]*6.283185307179586));j=j+1|0}while(j>>>0>>0)}g=a+68|0;Kh(d,f,c[g>>2]|0);n=c[k>>2]|0;m=(n|0)==-1;if(m){h[a+80>>3]=r;return}d=c[g>>2]|0;f=c[a+88>>2]|0;g=c[a+52>>2]|0;i=c[a+56>>2]|0;j=n+1|0;k=0;e=0.0;b=0.0;do{o=+h[d+(k<<3)>>3];l=c[f+(k<<2)>>2]|0;e=e+o*+h[g+(l<<3)>>3];b=b+(k&1|0?-1.0:1.0)*(o/+h[i+(l<<3)>>3]);k=k+1|0}while(k>>>0>>0);b=e/b;l=a+80|0;h[l>>3]=b;if(m)return;i=c[a+88>>2]|0;j=c[a+52>>2]|0;k=c[a+56>>2]|0;g=c[a+72>>2]|0;f=n+1|0;d=0;while(1){a=c[i+(d<<2)>>2]|0;h[g+(d<<3)>>3]=+h[j+(a<<3)>>3]-+((d<<1&2^2)+-1|0)*b/+h[k+(a<<3)>>3];d=d+1|0;if(d>>>0>=f>>>0)break;b=+h[l>>3]}return}function ef(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();n=r;l=c[a+12>>2]|0;m=(c[a+16>>2]|0)+l<<1;q=i;i=i+((1*(m<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();c[q>>2]=0;f=(c[a+20>>2]|0)+-1|0;a:do if(f>>>0>1){d=c[a+60>>2]|0;e=1;b=1;while(1){g=+h[d+(e<<3)>>3];if((g>=0.0?+h[d+(e+-1<<3)>>3]<=g:0)?+h[d+(e+1<<3)>>3]<=g:0)p=9;else if((g<0.0?+h[d+(e+-1<<3)>>3]>=g:0)?+h[d+(e+1<<3)>>3]>=g:0)p=9;if((p|0)==9){p=0;if(b>>>0>=m>>>0)break;c[q+(b<<2)>>2]=e;b=b+1|0}e=e+1|0;if(e>>>0>=f>>>0){k=b;break a}}Ha(22307,22324,711,22350)}else k=1;while(0);if(k>>>0>=m>>>0)Ha(22307,22324,725,22350);d=k+1|0;c[q+(k<<2)>>2]=f;o=l+1|0;if(d>>>0>>0){q=c[2348]|0;c[n>>2]=o;c[n+4>>2]=d;Kp(q,22371,n)|0;c[a+92>>2]=0;i=r;return}if(d>>>0>m>>>0)Ha(22472,22324,742,22350);b=d-l+-1|0;if(b|0){n=c[a+60>>2]|0;m=d;l=b;while(1){b:do if(m>>>0>1){e=c[q>>2]|0;f=e;k=1;b=0;e=+h[n+(e<<3)>>3]>0.0&1;while(1){d=c[q+(k<<2)>>2]|0;g=+h[n+(d<<3)>>3];s=+N(+g);f=s<+N(+(+h[n+(f<<3)>>3]));b=f?k:b;if(!e)if(!(g>=0.0)){b=k;break}else e=1;else if(g<0.0)e=0;else{b=k;break}d=k+1|0;if(d>>>0>=m>>>0){p=29;break b}f=c[q+(b<<2)>>2]|0;k=d}s=+N(+(+h[n+(d<<3)>>3]));k=b+-1|0;f=s<+N(+(+h[n+(c[q+(k<<2)>>2]<<3)>>3]));b=f?b:k}else{b=0;p=29}while(0);if((p|0)==29){p=0;if((l|0)==1){s=+N(+(+h[n+(c[q>>2]<<3)>>3]));b=m+-1|0;k=s<+N(+(+h[n+(c[q+(b<<2)>>2]<<3)>>3]));b=k?0:b}}if(b>>>0>>0)do{k=b;b=b+1|0;c[q+(k<<2)>>2]=c[q+(b<<2)>>2]}while((b|0)!=(m|0));l=l+-1|0;if(!l)break;else m=m+-1|0}}f=a+92|0;c[f>>2]=0;b=a+88|0;if(!o){d=0;b=c[b>>2]|0}else{b=c[b>>2]|0;d=0;e=0;do{d=((c[b+(e<<2)>>2]|0)!=(c[q+(e<<2)>>2]|0)&1)+d|0;c[f>>2]=d;e=e+1|0}while(e>>>0>>0);d=o<<2}gq(b|0,q|0,d|0)|0;i=r;return}function ff(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;df(a);x=a+12|0;k=c[x>>2]|0;w=a+4|0;f=c[w>>2]|0;v=k-f|0;e=v+1|0;y=i;i=i+((1*(e<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();a:do if(!e)e=c[a+28>>2]|0;else{t=a+64|0;u=a+72|0;r=a+68|0;s=a+28|0;p=k+1-f|0;f=0;while(1){d=+(f>>>0);l=+Q(+(d/+((c[a>>2]|0)>>>0)*6.283185307179586));l=+Lh(c[t>>2]|0,c[u>>2]|0,c[r>>2]|0,l,k+1|0);e=c[s>>2]|0;if((e|0)==0?(c[w>>2]|0)==0:0)d=+Q(+(d*3.141592653589793/+((c[a>>2]|0)>>>0)));else d=1.0;h[y+(f<<3)>>3]=l*d;f=f+1|0;if((f|0)==(p|0))break a;k=c[x>>2]|0}}while(0);if(e|0)switch(c[w>>2]|0){case 1:{Qp(22490,73,1,c[2348]|0)|0;i=z;return}case 0:{Qp(22490,73,1,c[2348]|0)|0;i=z;return}default:{i=z;return}}p=c[a>>2]|0;if(!p){i=z;return}q=+h[y>>3];o=+(v>>>0);m=+((1-(c[w>>2]|0)|0)>>>0)*.5;e=c[x>>2]|0;n=+(p>>>0);if(e>>>0>1)f=0;else{d=q/n;e=0;do{g[b+(e<<2)>>2]=d;e=e+1|0}while(e>>>0

>>0);i=z;return}while(1){l=(+(f>>>0)-o+m)/n*6.283185307179586;k=1;d=q;do{d=d+ +h[y+(k<<3)>>3]*2.0*+Q(+(l*+(k>>>0)));k=k+1|0}while(k>>>0>>0);g[b+(f<<2)>>2]=d/n;f=f+1|0;if(f>>>0>=p>>>0)break;e=c[x>>2]|0}i=z;return}function gf(a){a=a|0;Yp(c[a+88>>2]|0);Yp(c[a+64>>2]|0);Yp(c[a+68>>2]|0);Yp(c[a+72>>2]|0);Yp(c[a+48>>2]|0);Yp(c[a+52>>2]|0);Yp(c[a+56>>2]|0);Yp(c[a+60>>2]|0);Yp(c[a+32>>2]|0);Yp(c[a+36>>2]|0);Yp(c[a+40>>2]|0);Yp(c[a+44>>2]|0);Yp(a);return}function hf(a,b,d,e,f,h,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=+h;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0;q=i;if(!d){Qp(22564,58,1,c[2348]|0)|0;kb(1)}if(!e){Qp(22623,58,1,c[2348]|0)|0;kb(1)}if(f<0.0|f>1.0){Qp(22682,55,1,c[2348]|0)|0;kb(1)}p=_(d<<1,e)|0|1;l=i;i=i+((1*(p<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();m=i;i=i+((1*(p<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();o=i;i=i+((1*(p<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();switch(a|0){case 4:{jf(d,e,f,l);break}case 5:{kf(d,e,f,l);break}case 6:{lf(d,e,f,l);break}default:{Qp(22784,65,1,c[2348]|0)|0;kb(1)}}a=_(e,d)|0;n=a<<1|1;if(!b){e=0;do{c[m+(e<<3)>>2]=c[l+(e<<2)>>2];g[m+(e<<3)+4>>2]=0.0;e=e+1|0}while((e|0)!=(n|0))}else{e=0;do{g[m+(e<<3)>>2]=+O(+(+g[l+(e<<2)>>2]));g[m+(e<<3)+4>>2]=0.0;e=e+1|0}while((e|0)!=(n|0))}fl(p,m,o,-1,0);a=a+1|0;h=+(d>>>0);f=+(p>>>0);e=0;do{g[k+(e<<2)>>2]=h*+g[o+((((a+e|0)>>>0)%(p>>>0)|0)<<3)>>2]/f;e=e+1|0}while((e|0)!=(n|0));i=q;return}function jf(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;h=1.0-c;j=+(a>>>0);k=h*.5/j;l=.5/j;i=c+1.0;j=i*.5/j;e=.6931471824645996/(l*c);f=+((_(a<<1,b)|0|1)>>>0);h=l*h;i=l*i;a=(_(b,a)|0)<<1|1;b=0;do{c=+(b>>>0)/f;c=+N(+(c>.5?c+-1.0:c));do if(!(ck&c>2]=0.0;break}if(c>2]=+X(+(e*(h-c)));break}else{g[d+(b<<2)>>2]=1.0-+X(+(e*(c-i)));break}}else g[d+(b<<2)>>2]=1.0;while(0);b=b+1|0}while((b|0)!=(a|0));return}function kf(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;h=1.0-c;j=+(a>>>0);k=h*.5/j;l=.5/j;i=c+1.0;j=i*.5/j;e=1.316957950592041/(l*c);f=+((_(a<<1,b)|0|1)>>>0);h=l*h;i=l*i;a=(_(b,a)|0)<<1|1;b=0;do{c=+(b>>>0)/f;c=+N(+(c>.5?c+-1.0:c));do if(!(ck&c>2]=0.0;break}if(c>2]=1.0/+Eo(e*(c-h));break}else{g[d+(b<<2)>>2]=1.0-1.0/+Eo(e*(i-c));break}}else g[d+(b<<2)>>2]=1.0;while(0);b=b+1|0}while((b|0)!=(a|0));return}function lf(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;j=1.0-d;k=+(a>>>0);n=j*.5/k;o=.5/k;h=d+1.0;k=h*.5/k;l=1.0/(o*(d*2.0));m=+((_(a<<1,b)|0|1)>>>0);f=l/(1.316957950592041/(o*d));h=o*h;i=c[2348]|0;j=o*j;a=(_(b,a)|0)<<1|1;b=0;do{d=+(b>>>0)/m;d=+N(+(d>.5?d+-1.0:d));do if(!(dn&d>2]=0.0;break}if(d1.0){Qp(22738,45,1,i)|0;d=0.0}else{d=1.0/d;d=+Y(+(d+ +O(+(d+-1.0))*+O(+(d+1.0))))}g[e+(b<<2)>>2]=1.0-f*d;break}else{d=l*(d-j);if(d<=0.0|d>1.0){Qp(22738,45,1,i)|0;d=0.0}else{d=1.0/d;d=+Y(+(d+ +O(+(d+-1.0))*+O(+(d+1.0))))}g[e+(b<<2)>>2]=f*d;break}}else g[e+(b<<2)>>2]=1.0;while(0);b=b+1|0}while((b|0)!=(a|0));return}function mf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;hf(4,0,a,b,c,0.0,e);return}function nf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;hf(4,1,a,b,c,0.0,e);return}function of(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;hf(5,0,a,b,c,0.0,e);return}function pf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;hf(5,1,a,b,c,0.0,e);return}function qf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;hf(6,0,a,b,c,0.0,e);return}function rf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=e|0;hf(6,1,a,b,c,0.0,e);return}function sf(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0;if(!a){Qp(22850,56,1,c[2348]|0)|0;kb(1)}if(!b){Qp(22907,56,1,c[2348]|0)|0;kb(1)}if(d<0.0|d>1.0){Qp(22964,53,1,c[2348]|0)|0;kb(1)}i=+(a>>>0);h=+(b>>>0);d=d*6.283185307179586;b=(_(b,a)|0)<<1|1;a=0;do{j=+(a>>>0)/i-h+e;k=+Ph(d*(j+-.5)*1.2011224031448364);g[f+(a<<2)>>2]=k-+Ph(d*(j+.5)*1.2011224031448364);a=a+1|0}while((a|0)!=(b|0));d=0.0;a=0;do{d=d+ +g[f+(a<<2)>>2];a=a+1|0}while((a|0)!=(b|0));d=3.141592653589793/(d*2.0);a=0;do{l=f+(a<<2)|0;g[l>>2]=d*+g[l>>2];a=a+1|0}while((a|0)!=(b|0));a=0;do{l=f+(a<<2)|0;g[l>>2]=i*+g[l>>2];a=a+1|0}while((a|0)!=(b|0));return}function tf(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0,G=0;F=i;if(!a){Qp(23018,56,1,c[2348]|0)|0;kb(1)}if(!b){Qp(23075,56,1,c[2348]|0)|0;kb(1)}if(d<0.0|d>1.0){Qp(23132,53,1,c[2348]|0)|0;kb(1)}C=_(a<<1,b)|0|1;h=i;i=i+((1*(C<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();D=i;i=i+((1*(C<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();sf(a,b,d,0.0,h);n=i;i=i+((1*(C<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();o=i;i=i+((1*(C<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();p=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();q=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();r=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();B=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();w=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();x=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();y=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();z=i;i=i+((1*(C<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Ye(1,a,b,d,0.0,n);E=+(a>>>0);Xe(C,(d*.1+.699999988079071)/E,60.0,0.0,o);v=_(b,a)|0;A=v<<1|1;b=0;do{G=((b+v|0)>>>0)%(C>>>0)|0;c[q+(b<<3)>>2]=c[n+(G<<2)>>2];g[q+(b<<3)+4>>2]=0.0;c[r+(b<<3)>>2]=c[o+(G<<2)>>2];g[r+(b<<3)+4>>2]=0.0;c[p+(b<<3)>>2]=c[h+(G<<2)>>2];g[p+(b<<3)+4>>2]=0.0;b=b+1|0}while((b|0)!=(A|0));fl(C,q,x,1,0);fl(C,r,y,1,0);fl(C,p,w,1,0);t=+g[x>>2];s=+g[y>>2];m=0.0;l=0.0;k=0.0;b=0;while(1){d=+g[w+(b<<3)>>2];if(b){k=d>2];l=e>2];if(e>2];d=e;b=0;while(1){t=(d-m)/e;g[z+(b<<3)>>2]=(+g[x+(b<<3)>>2]-l+1.0000000474974513e-03)/(+g[w+(b<<3)>>2]-k+1.0000000474974513e-03)*t;g[z+(b<<3)+4>>2]=t*0.0;b=b+1|0;if((b|0)==(A|0))break;d=+g[y+(b<<3)>>2]}fl(C,z,B,-1,0);h=v+1|0;e=+((_(C,a)|0)>>>0);b=0;do{g[D+(b<<2)>>2]=+g[B+((((h+b|0)>>>0)%(C>>>0)|0)<<3)>>2]/e;b=b+1|0}while((b|0)!=(A|0));b=0;do{g[f+(b<<2)>>2]=E*(E*+g[D+(b<<2)>>2]);b=b+1|0}while((b|0)!=(A|0));i=F;return}function uf(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0.0;v=i;i=i+80|0;if((i|0)>=(j|0))ba();n=v+48|0;o=v+32|0;t=v+20|0;u=v+8|0;p=v+4|0;q=v;if(a>>>0<2){Qp(23186,53,1,c[2348]|0)|0;kb(1)}if(!b){Qp(23240,53,1,c[2348]|0)|0;kb(1)}if(d<0.0|d>1.0){Qp(23294,50,1,c[2348]|0)|0;kb(1)}h=a<<1;m=_(h,b)|0|1;w=1.0/+(h>>>0);e=w;r=d;g[n>>2]=0.0;h=n+4|0;g[h>>2]=e*(1.0-r);g[n+8>>2]=w;g[n+12>>2]=w;g[n+16>>2]=e*(r+1.0);g[n+20>>2]=.5;g[o>>2]=1.0;g[o+4>>2]=.7071067690849304;g[o+8>>2]=0.0;c[t>>2]=c[133];c[t+4>>2]=c[134];c[t+8>>2]=c[135];c[u>>2]=c[136];c[u+4>>2]=c[137];c[u+8>>2]=c[138];k=i;i=i+((1*(m<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();$e(m,3,n,o,t,u,0,k);l=m<<2;fq(f|0,k|0,l|0)|0;Ze(k,a,b,q,p);r=+g[q>>2];s=0;do{g[h>>2]=e*(1.0-+(s>>>0)*d/100.0);$e(m,3,n,o,t,u,0,k);Ze(k,a,b,q,p);w=r;r=+g[q>>2];if(r>w)break;fq(f|0,k|0,l|0)|0;s=s+1|0}while(s>>>0<100);k=(_(b,a)|0)<<1|1;e=0.0;h=0;do{w=+g[f+(h<<2)>>2];e=e+w*w;h=h+1|0}while((h|0)!=(k|0));e=+O(+(+(a>>>0)/e));h=0;do{a=f+(h<<2)|0;g[a>>2]=e*+g[a>>2];h=h+1|0}while((h|0)!=(k|0));i=v;return}function vf(b,d,e,f){b=b|0;d=d|0;e=+e;f=f|0;var h=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0;A=i;if(e<0.0){Qp(23345,53,1,c[2348]|0)|0;kb(1)}z=i;i=i+((1*d|0)+15&-16)|0;if((i|0)>=(j|0))ba();eq(z|0,0,d|0)|0;y=(d|0)==0;if(y){b=0;wf(f,d,b);i=A;return}else{x=0;k=0;h=0}do{p=z+x|0;a:do if((a[p>>0]|0)==0?(v=b+(x<<3)|0,w=+g[b+(x<<3)+4>>2],!(+N(+w)>0]|0)==0):0)?(r=b+(l<<3)|0,s=b+(l<<3)+4|0,t=+g[s>>2],!(+N(+t)>2],+N(+(u-+g[r>>2]))>>0>=d>>>0)break a}B=k+1|0;g[f+(k<<3)>>2]=m;g[f+(k<<3)+4>>2]=w;o=c[o>>2]|0;c[f+(B<<3)>>2]=c[n>>2];c[f+(B<<3)+4>>2]=o;a[p>>0]=1;a[l>>0]=1;k=k+2|0;h=h+1|0}while(0);x=x+1|0}while((x|0)!=(d|0));if(k>>>0>d>>>0)Ha(23399,23407,102,23431);if(y){B=h;wf(f,d,B);i=A;return}n=c[2348]|0;o=0;do{l=z+o|0;do if(!(a[l>>0]|0)){m=+g[b+(o<<3)+4>>2];if(m>e){Qp(23447,61,1,n)|0;break}else{c[f+(k<<3)>>2]=c[b+(o<<3)>>2];g[f+(k<<3)+4>>2]=m;a[l>>0]=1;k=k+1|0;break}}while(0);o=o+1|0}while((o|0)!=(d|0));wf(f,d,h);i=A;return}function wf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+48|0;if((i|0)>=(j|0))ba();e=x+32|0;f=x+24|0;h=x+16|0;o=x+8|0;p=x;q=(d|0)==0;if(!q){r=p+4|0;s=o+4|0;t=h+4|0;u=f+4|0;w=0;do{v=w<<1;l=a+(v<<3)|0;n=a+(v<<3)+4|0;m=+g[n>>2];k=+g[l>>2];if(!(m<0.0)){g[h>>2]=k;g[t>>2]=m;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];Ko(f,e);k=+g[f>>2];m=+g[u>>2]}g[l>>2]=k;g[n>>2]=m;g[p>>2]=k;g[r>>2]=m;c[e>>2]=c[p>>2];c[e+4>>2]=c[p+4>>2];Ko(o,e);n=c[s>>2]|0;v=v|1;c[a+(v<<3)>>2]=c[o>>2];c[a+(v<<3)+4>>2]=n;w=w+1|0}while((w|0)!=(d|0));if(!q){q=d+-1|0;o=0;do{if(q>>>0>o>>>0){e=d;p=q;while(1){e=e<<1;f=e+-4|0;h=a+(f<<3)|0;k=+g[h>>2];l=p<<1;n=a+(l<<3)|0;m=+g[n>>2];if(k>m){v=a+(f<<3)+4|0;t=c[v>>2]|0;s=a+(l<<3)+4|0;w=c[s>>2]|0;g[h>>2]=m;c[v>>2]=w;g[n>>2]=k;c[s>>2]=t;s=e+-3|0;n=a+(s<<3)|0;t=c[n>>2]|0;s=a+(s<<3)+4|0;v=c[s>>2]|0;w=l|1;u=a+(w<<3)|0;w=a+(w<<3)+4|0;r=c[w>>2]|0;c[n>>2]=c[u>>2];c[s>>2]=r;c[u>>2]=t;c[w>>2]=v}e=p+-1|0;if(e>>>0>o>>>0){w=p;p=e;e=w}else break}}o=o+1|0}while((o|0)!=(d|0))}}e=d<<1;if(e>>>0>=b>>>0){i=x;return}o=b+-1|0;do{if(o>>>0>e>>>0){f=b;n=o;while(1){f=f+-2|0;h=a+(f<<3)|0;k=+g[h>>2];l=a+(n<<3)|0;m=+g[l>>2];if(k>m){v=a+(f<<3)+4|0;w=c[v>>2]|0;d=a+(n<<3)+4|0;u=c[d>>2]|0;g[h>>2]=m;c[v>>2]=u;g[l>>2]=k;c[d>>2]=w}f=n+-1|0;if(f>>>0>e>>>0){d=n;n=f;f=d}else break}}e=e+1|0}while((e|0)!=(b|0));i=x;return}function xf(a,b,c,d,e,f,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;k=k|0;l=l|0;m=m|0;var n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=i;i=i+64|0;if((i|0)>=(j|0))ba();x=B+48|0;y=B+32|0;z=B+16|0;A=B;o=+g[e>>2];n=+g[e+4>>2];if(!d){s=o;f=n;k=m+4|0;g[m>>2]=s;g[k>>2]=f;i=B;return}v=x+8|0;w=y+8|0;t=z+8|0;u=A+8|0;e=0;do{if(e>>>0>>0){q=+g[a+(e<<3)>>2]*f;p=+g[a+(e<<3)+4>>2]*f;Zn(x,q+1.0,p,1.0-q,-p);p=+h[v>>3];q=+h[x>>3]}else{p=0.0;q=-1.0}D=k+(e<<3)|0;g[D>>2]=q;C=k+(e<<3)+4|0;g[C>>2]=p;r=+g[c+(e<<3)>>2]*f;s=+g[c+(e<<3)+4>>2]*f;Zn(y,r+1.0,s,1.0-r,-s);s=+h[y>>3];r=+h[w>>3];g[l+(e<<3)>>2]=s;g[l+(e<<3)+4>>2]=r;Zn(z,1.0-s,-r,1.0-+g[D>>2],-+g[C>>2]);r=+h[z>>3];s=+h[t>>3];q=o;p=n;o=q*r-p*s;n=p*r+q*s;if((o!=o|0.0!=0.0)&(n!=n|0.0!=0.0)){$n(A,q,p,r,s);o=+h[A>>3];n=+h[u>>3]}e=e+1|0}while((e|0)!=(d|0));D=m+4|0;g[m>>2]=o;g[D>>2]=n;i=B;return}function yf(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0.0;r=i;i=i+16|0;if((i|0)>=(j|0))ba();p=r;q=i;i=i+((1*(d+1<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Oh(b,d,q);b=0;do{c[h+(b<<2)>>2]=c[q+(d-b<<3)>>2];b=b+1|0}while(b>>>0<=d>>>0);Oh(a,d,q);o=+g[e>>2];n=+g[e+4>>2];b=0;do{e=d-b|0;l=+g[q+(e<<3)>>2];m=+g[q+(e<<3)+4>>2];k=l*o-m*n;s=m*o+l*n;if((k!=k|0.0!=0.0)&(s!=s|0.0!=0.0)){ao(p,l,m,o,n);k=+g[p>>2]}g[f+(b<<2)>>2]=k;b=b+1|0}while(b>>>0<=d>>>0);i=r;return}function zf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0;C=i;i=i+16|0;if((i|0)>=(j|0))ba();y=C+8|0;z=C;B=i;i=i+((1*(c<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();vf(a,c,9.999999974752427e-07,B);A=i;i=i+((1*(c<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();vf(b,c,9.999999974752427e-07,A);w=c&1;x=(c-w|0)>>>1;if(!x)a=0;else{u=c>>>1;v=0;do{o=v<<1;k=+g[A+(o<<3)>>2];l=+g[A+(o<<3)+4>>2];b=o|1;D=+g[A+(b<<3)>>2];m=+g[A+(b<<3)+4>>2];n=-D;p=+g[B+(o<<3)>>2];q=+g[B+(o<<3)+4>>2];r=+g[B+(b<<3)>>2];s=+g[B+(b<<3)+4>>2];t=-r;b=v*3|0;g[f+(b<<2)>>2]=1.0;o=b+1|0;g[f+(o<<2)>>2]=n-k;h=k*D-l*m;D=l*D+k*m;if((h!=h|0.0!=0.0)&(D!=D|0.0!=0.0)){ao(y,-k,-l,n,-m);h=+g[y>>2]}a=b+2|0;g[f+(a<<2)>>2]=h;g[e+(b<<2)>>2]=1.0;g[e+(o<<2)>>2]=t-p;h=p*r-q*s;D=q*r+p*s;if((h!=h|0.0!=0.0)&(D!=D|0.0!=0.0)){ao(z,-p,-q,t,-s);h=+g[z>>2]}g[e+(a<<2)>>2]=h;v=v+1|0}while((v|0)!=(u|0));a=x*3|0}if(w|0){z=c+-1|0;t=-+g[A+(z<<3)>>2];D=-+g[B+(z<<3)>>2];g[f+(a<<2)>>2]=1.0;A=a+1|0;g[f+(A<<2)>>2]=t;B=a+2|0;g[f+(B<<2)>>2]=0.0;g[e+(a<<2)>>2]=1.0;g[e+(A<<2)>>2]=D;g[e+(B<<2)>>2]=0.0}f=x+w|0;h=+P(+(+g[d>>2]),+(1.0/+(f>>>0)));if(!f){i=C;return}a=c&1;a=((c-a|0)>>>1)+a|0;b=0;do{c=b*3|0;d=e+(c<<2)|0;g[d>>2]=h*+g[d>>2];d=e+(c+1<<2)|0;g[d>>2]=h*+g[d>>2];c=e+(c+2<<2)|0;g[c>>2]=h*+g[c>>2];b=b+1|0}while((b|0)!=(a|0));i=C;return}function Af(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;var k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0.0,z=0.0,A=0,B=0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;ma=i;i=i+144|0;if((i|0)>=(j|0))ba();W=ma+128|0;X=ma+120|0;Y=ma+112|0;ea=ma+104|0;fa=ma+96|0;ga=ma+88|0;ha=ma+80|0;ia=ma+72|0;ja=ma+64|0;ka=ma+56|0;la=ma+48|0;Z=ma+40|0;_=ma+32|0;$=ma+24|0;aa=ma+16|0;ca=ma+8|0;da=ma;C=+Q(+(e*6.283185307179586));if(!d){i=ma;return}D=C*C;E=X+4|0;F=Y+4|0;G=fa+4|0;H=ea+4|0;I=ga+4|0;J=ha+4|0;K=ja+4|0;L=ia+4|0;M=ka+4|0;N=la+4|0;O=_+4|0;P=Z+4|0;R=$+4|0;S=aa+4|0;T=da+4|0;U=ca+4|0;V=0;do{w=a+(V<<3)|0;e=+g[w>>2];x=a+(V<<3)+4|0;k=+g[x>>2];r=e+1.0;s=k+0.0;z=C*r;y=C*s;t=D*r;u=D*s;o=r*t-s*u;n=t*s+r*u;v=(o!=o|0.0!=0.0)&(n!=n|0.0!=0.0);if(v){ao(X,t,u,r,s);e=+g[w>>2];k=+g[x>>2];p=+g[X>>2];q=+g[E>>2]}else{p=o;q=n}l=e*4.0-k*0.0;m=e*0.0+k*4.0;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(Y,4.0,0.0,e,k);k=+g[Y>>2];e=+g[F>>2]}else{k=l;e=m}g[fa>>2]=p-k;g[G>>2]=q-e;c[W>>2]=c[fa>>2];c[W+4>>2]=c[fa+4>>2];zo(ea,W);q=(y+ +g[H>>2])*.5;B=V<<1;g[f+(B<<3)>>2]=(z+ +g[ea>>2])*.5;g[f+(B<<3)+4>>2]=q;if(v){ao(ga,t,u,r,s);o=+g[ga>>2];n=+g[I>>2]}m=+g[w>>2];l=+g[x>>2];k=m*4.0-l*0.0;e=m*0.0+l*4.0;if((k!=k|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(ha,4.0,0.0,m,l);k=+g[ha>>2];e=+g[J>>2]}g[ja>>2]=o-k;g[K>>2]=n-e;c[W>>2]=c[ja>>2];c[W+4>>2]=c[ja+4>>2];zo(ia,W);e=(y-+g[L>>2])*.5;A=B|1;g[f+(A<<3)>>2]=(z-+g[ia>>2])*.5;g[f+(A<<3)+4>>2]=e;w=b+(V<<3)|0;e=+g[w>>2];x=b+(V<<3)+4|0;k=+g[x>>2];r=e+1.0;s=k+0.0;y=C*r;z=C*s;t=D*r;u=D*s;o=r*t-s*u;n=t*s+r*u;v=(o!=o|0.0!=0.0)&(n!=n|0.0!=0.0);if(v){ao(ka,t,u,r,s);e=+g[w>>2];k=+g[x>>2];p=+g[ka>>2];q=+g[M>>2]}else{p=o;q=n}l=e*4.0-k*0.0;m=e*0.0+k*4.0;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(la,4.0,0.0,e,k);k=+g[la>>2];e=+g[N>>2]}else{k=l;e=m}g[_>>2]=p-k;g[O>>2]=q-e;c[W>>2]=c[_>>2];c[W+4>>2]=c[_+4>>2];zo(Z,W);q=(z+ +g[P>>2])*.5;g[h+(B<<3)>>2]=(y+ +g[Z>>2])*.5;g[h+(B<<3)+4>>2]=q;if(v){ao($,t,u,r,s);o=+g[$>>2];n=+g[R>>2]}m=+g[w>>2];l=+g[x>>2];k=m*4.0-l*0.0;e=m*0.0+l*4.0;if((k!=k|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(aa,4.0,0.0,m,l);k=+g[aa>>2];e=+g[S>>2]}g[da>>2]=o-k;g[T>>2]=n-e;c[W>>2]=c[da>>2];c[W+4>>2]=c[da+4>>2];zo(ca,W);z=(z-+g[U>>2])*.5;g[h+(A<<3)>>2]=(y-+g[ca>>2])*.5;g[h+(A<<3)+4>>2]=z;V=V+1|0}while((V|0)!=(d|0));i=ma;return}function Bf(a,b,d,e,f,h,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=+h;k=+k;l=+l;m=m|0;n=n|0;var o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=i;i=i+48|0;if((i|0)>=(j|0))ba();y=B+40|0;s=B+24|0;x=B+8|0;u=B+32|0;z=B+16|0;A=B;if(!(!(f<=0.0)&!(f>=.5))){Qp(23509,54,1,c[2348]|0)|0;kb(1)}if(h<0.0|h>.5){Qp(23564,54,1,c[2348]|0)|0;kb(1)}if(k<=0.0){Qp(23619,54,1,c[2348]|0)|0;kb(1)}if(l<=0.0){Qp(23674,54,1,c[2348]|0)|0;kb(1)}if(!e){Qp(23729,49,1,c[2348]|0)|0;kb(1)}v=i;i=i+((1*(e<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();w=i;i=i+((1*(e<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();o=e&1;p=(e-o|0)>>>1;switch(a|0){case 0:{ll(e,w,v,s);r=1.0;q=0;break}case 1:{k=+O(+(+P(10.0,+(k/10.0))+-1.0));if(!o)r=1.0/+O(+(k*k+1.0));else r=1.0;ml(e,k,w,v,s);q=0;break}case 2:{nl(e,+P(10.0,+(-l/20.0)),w,v,s);r=1.0;q=p<<1;break}case 3:{k=+P(10.0,+(-k/20.0));l=+P(10.0,+(-l/20.0));k=+O(+(1.0/(k*k)+-1.0));l=+O(+(1.0/(l*l)+-1.0));if(!o)r=1.0/+O(+(k*k+1.0));else r=1.0;sl(e,k,l,w,v,s);q=p<<1;break}case 4:{il(e,w,v,s);r=1.0;q=0;break}default:{Qp(23779,44,1,c[2348]|0)|0;kb(1)}}o=e<<1;s=i;i=i+((1*(o<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();t=i;i=i+((1*(o<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();switch(b|0){case 0:{k=+S(+(f*3.141592653589793));break}case 1:{k=f*3.141592653589793;k=-+Q(+k)/+R(+k);break}case 2:{k=f*6.283185307179586;k=(+Q(+k)-+Q(+(h*6.283185307179586)))/+R(+k);break}case 3:{k=f*6.283185307179586;k=+R(+k)/(+Q(+k)-+Q(+(h*6.283185307179586)));break}default:k=0.0}f=+N(+k);g[u>>2]=r;g[u+4>>2]=0.0;c[y>>2]=c[u>>2];c[y+4>>2]=c[u+4>>2];xf(w,q,v,e,y,f,s,t,x);if((b|2|0)==3){a=0;do{w=s+(a<<3)|0;v=s+(a<<3)+4|0;f=-+g[v>>2];g[w>>2]=-+g[w>>2];g[v>>2]=f;v=t+(a<<3)|0;w=t+(a<<3)+4|0;f=-+g[w>>2];g[v>>2]=-+g[v>>2];g[w>>2]=f;a=a+1|0}while((a|0)!=(e|0))}if((b|1|0)==3){a=Wa()|0;p=i;i=i+((1*(o<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();q=i;i=i+((1*(o<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();Af(s,t,e,h,p,q);e=e<<4;fq(s|0,p|0,e|0)|0;fq(t|0,q|0,e|0)|0;Ga(a|0)}else o=e;p=c[x>>2]|0;a=c[x+4>>2]|0;if((d|0)==1){c[z>>2]=p;c[z+4>>2]=a;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];yf(s,t,o,y,m,n);i=B;return}else{c[A>>2]=p;c[A+4>>2]=a;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];zf(s,t,o,y,m,n);i=B;return}}function Cf(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;if(!a){Qp(23824,54,1,c[2348]|0)|0;kb(1)}if(!b){Qp(23879,54,1,c[2348]|0)|0;kb(1)}if(d<0.0|d>1.0){Qp(23934,51,1,c[2348]|0)|0;kb(1)}n=+(a>>>0);o=+(b>>>0);m=d;k=d*4.0*d;l=3.141592653589793/(m*2.0);m=m*3.141592653589793;a=(_(b,a)|0)<<1|1;b=0;do{h=(+(b>>>0)+e)/n-o;i=+Qh(h);j=1.0-h*(k*h);if(+N(+j)<1.0000000474974513e-03)h=+R(+l)*d*.5;else h=i*+Q(+(m*h))/j;g[f+(b<<2)>>2]=h;b=b+1|0}while((b|0)!=(a|0));return}function Df(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var g=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();if(a>>>0<2){Qp(23986,53,1,c[2348]|0)|0;kb(1)}if(!b){Qp(24040,53,1,c[2348]|0)|0;kb(1)}if(d<=0.0|d>=1.0){Qp(24094,54,1,c[2348]|0)|0;kb(1)}if(e<-1.0|e>1.0){Qp(24149,53,1,c[2348]|0)|0;kb(1)}else{Ef(a,b,d,e,f,g);i=g;return}}function Ef(a,b,d,e,f,h){a=a|0;b=b|0;d=+d;e=+e;f=f|0;h=h|0;var i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0;if(!a){Qp(24203,67,1,c[2348]|0)|0;kb(1)}if(!b){Qp(24271,67,1,c[2348]|0)|0;kb(1)}if(d<0.0|d>1.0){Qp(24339,64,1,c[2348]|0)|0;kb(1)}m=+Ff(b,d);l=.20000000298023224;j=0;i=m;n=0.0;while(1){p=m-l;o=m+l;p=!(p<=0.0)?p:.009999999776482582;o=!(o>=1.0)?o:.9900000095367432;s=+Gf(a,b,d,e,p,f);r=+Gf(a,b,d,e,m,f);q=+Gf(a,b,d,e,o,f);w=(j|0)==0|ro){k=i;break}if(j>>>0>3?+N(+(m-k))<9.999999974752427e-07:0){k=i;break}j=j+1|0;if(j>>>0>=14){k=i;break}else l=l*.5}+Gf(a,b,d,e,k,f);b=(_(b,a)|0)<<1|1;i=0.0;j=0;do{v=+g[f+(j<<2)>>2];i=i+v*v;j=j+1|0}while((j|0)!=(b|0));i=+O(+(+(a>>>0)/i));j=0;do{w=f+(j<<2)|0;g[w>>2]=i*+g[w>>2];j=j+1|0}while((j|0)!=(b|0));g[h>>2]=k;return}function Ff(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0.0;if(!a){Qp(24404,59,1,c[2348]|0)|0;kb(1)}if(b<0.0|b>1.0){Qp(24464,56,1,c[2348]|0)|0;kb(1)}do switch(a|0){case 1:{d=.7574973106384277;e=.061343029141426086;f=-.08729662746191025;break}case 2:{d=.8115186095237732;e=.07437658309936523;f=-.01427088025957346;break}case 3:{d=.8424953818321228;e=.07684185355901718;f=-.005368790123611689;break}case 4:{d=.8614078164100647;e=.07144126296043396;f=-.005586519837379456;break}case 5:{d=.8745774030685425;e=.0657869428396225;f=-.006504470016807318;break}case 6:{d=.8843879699707031;e=.06074265018105507;f=-.007364050019532442;break}case 7:{d=.8921661972999573;e=.05669236183166504;f=-.007912220433354378;break}case 8:{d=.898749828338623;e=.0536169596016407;f=-.008153010159730911;break}case 9:{d=.9046003222465515;e=.051679521799087524;f=-.008078929968178272;break}case 10:{d=.9103443026542664;e=.05130752921104431;f=-.007461919914931059;break}case 11:{d=.9158767461776733;e=.05180436000227928;f=-.006707109976559877;break}case 12:{d=.921218752861023;e=.0527380108833313;f=-.00588351022452116;break}case 13:{d=.9263819456100464;e=.054007638245821;f=-.00508452020585537;break}case 14:{d=.9312355518341064;e=.05516162887215614;f=-4.3730600737035275e-03;break}case 15:{d=.9356499314308167;e=.0559656098484993;f=-3.8815198931843042e-03;break}case 16:{d=.9397674202919006;e=.056622739881277084;f=-3.4827999770641327e-03;break}case 17:{d=.9435170292854309;e=.0569412000477314;f=-3.1882100738584995e-03;break}case 18:{d=.9455727338790894;e=.05227591097354889;f=-.004006760194897652;break}case 19:{d=.9500161409378052;e=.05681641027331352;f=-3.0062799341976643e-03;break}case 20:{d=.9528170824050903;e=.05637606978416443;f=-.003047900041565299;break}case 21:{d=.9553625583648682;e=.055758800357580185;f=-.00312987994402647;break}case 22:{d=.9575420618057251;e=.05426060035824776;f=-3.8594501093029976e-03;break}default:{d=+Y(+(+(a>>>0)+1.0000000474974513e-03))*.056873+.781388;e=.054260000586509705;f=-.003860000055283308}}while(0);b=+Y(+b);d=d+e*b+b*(f*b);if(d<0.0){b=0.0;return +b}if(!(d>1.0)){b=d;return +b}b=1.0;return +b}function Gf(a,b,d,e,f,h){a=a|0;b=b|0;d=+d;e=+e;f=+f;h=h|0;var k=0,l=0,m=0,n=0,o=0.0;m=i;i=i+16|0;if((i|0)>=(j|0))ba();k=m+4|0;l=m;if(!(f<0.0)){if(f>1.0)Qp(24577,55,1,c[2348]|0)|0}else Qp(24521,55,1,c[2348]|0)|0;n=_(a<<1,b)|0|1;o=+(a>>>0);Xe(n,((1.0-f)*d+1.0)*.5/o,+We(d*f/o,n),e,h);Ze(h,a,b,l,k);i=m;return +(+g[l>>2])}function Hf(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0.0,i=0.0,j=0;if(a>>>0<2){Qp(24633,54,1,c[2348]|0)|0;kb(1)}if(!b){Qp(24688,54,1,c[2348]|0)|0;kb(1)}if(d<=0.0|d>=1.0){Qp(24743,55,1,c[2348]|0)|0;kb(1)}if(e<-1.0|e>1.0){Qp(24799,54,1,c[2348]|0)|0;kb(1)}i=+(b>>>0);h=+Y(+d);h=+Y(+i)*.067663+.762886+h*.06551499664783478+h*(+Y(+(1.0-+P(+i,-1.600000023841858)*.088))*h);if(h<=0.0|h>=1.0)h=+Ff(b,d);j=_(a<<1,b)|0|1;i=+(a>>>0);Xe(j,((1.0-h)*d+1.0)*.5/i,+We(h*d/i,j),e,f);b=(_(b,a)|0)<<1|1;h=0.0;a=0;do{e=+g[f+(a<<2)>>2];h=h+e*e;a=a+1|0}while((a|0)!=(b|0));h=+O(+(i/h));a=0;do{j=f+(a<<2)|0;g[j>>2]=h*+g[j>>2];a=a+1|0}while((a|0)!=(b|0));return}function If(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;if(!a){Qp(24854,55,1,c[2348]|0)|0;kb(1)}if(!b){Qp(24910,55,1,c[2348]|0)|0;kb(1)}if(d<0.0|d>1.0){Qp(24966,52,1,c[2348]|0)|0;kb(1)}s=+(a>>>0);t=+(b>>>0);l=(d+1.0)*3.141592653589793;p=1.0-d;m=p*3.141592653589793;n=d*4.0;o=n;p=p+o/3.141592653589793;q=d*16.0*d;r=.7853981633974483/d;k=d/1.4142135381698608;a=(_(b,a)|0)<<1|1;b=0;do{d=(+(b>>>0)+e)/s-t;i=d;h=+Q(+(l*i));i=+R(+(m*i));do if(!(+N(+d)<1.0e-05)){j=1.0-d*(q*d);if(j*j<1.0e-05){g[f+(b<<2)>>2]=k*(+R(+r)*1.6366198062896729+ +Q(+r)*.36338022351264954);break}else{g[f+(b<<2)>>2]=o/(j*3.141592653589793)*(h+1.0/(n*d)*i);break}}else g[f+(b<<2)>>2]=p;while(0);b=b+1|0}while((b|0)!=(a|0));return}function Jf(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0.0,j=0,k=0.0,l=0;b=Xp(140)|0;c[b>>2]=2;c[b+4>>2]=7;g[b+8>>2]=.25;c[b+12>>2]=Ee(7,2,7,.25,0.0)|0;d=Xp(512)|0;c[b+64>>2]=d;e=Qj(7,137,1)|0;f=0;do{l=(Tj(e)|0)!=0;j=d+(f<<3)|0;h=d+(f<<3)+4|0;g[j>>2]=l?.7071067690849304:-.7071067690849304;g[h>>2]=0.0;l=(Tj(e)|0)!=0;k=l?.7071067811865476:-.7071067811865476;i=k+ +g[h>>2];g[j>>2]=+g[j>>2]+k*0.0;g[h>>2]=i;f=f+1|0}while((f|0)!=64);Sj(e);l=b+120|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[b+68>>2]=0;c[b+88>>2]=0;c[b+100>>2]=0;c[b+80>>2]=0;c[b+92>>2]=0;c[b+72>>2]=14;l=ph()|0;c[b+108>>2]=l;c[b+104>>2]=64;l=sh(l)|0;c[b+112>>2]=l;c[b+116>>2]=Xp(l<<3)|0;Kf(b,a)|0;Mf(b,0)|0;return b|0}function Kf(a,b){a=a|0;b=b|0;var d=0;if(c[a+128>>2]|0){Qp(25019,81,1,c[2348]|0)|0;a=-1;return a|0}if(!b){Kf(a,556)|0;return 0}if(((c[b>>2]|0)+-1|0)>>>0>5){Qp(25101,63,1,c[2348]|0)|0;kb(1)}if(!(c[b+4>>2]|0)){d=c[2348]|0;Qp(25165,63,1,d)|0;kb(1)}if(!(c[b+8>>2]|0)){d=c[2348]|0;Qp(25165,63,1,d)|0;kb(1)}if(!(c[b+12>>2]|0)){Qp(25229,70,1,c[2348]|0)|0;kb(1)}gq(a+32|0,b|0,16)|0;Lf(a);d=0;return d|0}function Lf(a){a=a|0;var b=0,d=0;d=a+108|0;rh(c[d>>2]|0,c[a+104>>2]|0,c[a+32>>2]|0,c[a+36>>2]|0,c[a+40>>2]|0,c[a+44>>2]|0)|0;d=sh(c[d>>2]|0)|0;c[a+112>>2]=d;b=a+116|0;a=_p(c[b>>2]|0,d<<3)|0;c[b>>2]=a;if(!a){Qp(25300,71,1,c[2348]|0)|0;kb(1)}else return}function Mf(a,b){a=a|0;b=b|0;var d=0;if(c[a+128>>2]|0){Qp(25372,89,1,c[2348]|0)|0;a=-1;return a|0}b=(b|0)==0?572:b;if(((c[b>>2]|0)+-1|0)>>>0>5){Qp(25462,71,1,c[2348]|0)|0;kb(1)}if(!(c[b+4>>2]|0)){d=c[2348]|0;Qp(25534,71,1,d)|0;kb(1)}if(!(c[b+8>>2]|0)){d=c[2348]|0;Qp(25534,71,1,d)|0;kb(1)}if(!(c[b+12>>2]|0)){Qp(25606,78,1,c[2348]|0)|0;kb(1)}gq(a+48|0,b|0,16)|0;Nf(a,c[a+72>>2]|0);d=0;return d|0}function Nf(a,b){a=a|0;b=b|0;var d=0,e=0;if(c[a+128>>2]|0){Qp(25019,81,1,c[2348]|0)|0;return}c[a+72>>2]=b;d=b+6|0;e=a+76|0;c[e>>2]=d;b=a+68|0;c[b>>2]=_p(c[b>>2]|0,d)|0;b=a+80|0;d=c[b>>2]|0;if(d|0)qh(d);d=ph()|0;c[b>>2]=d;rh(d,c[e>>2]|0,c[a+48>>2]|0,c[a+52>>2]|0,c[a+56>>2]|0,c[a+60>>2]|0)|0;e=sh(c[b>>2]|0)|0;b=a+84|0;c[b>>2]=e;d=a+88|0;c[d>>2]=_p(c[d>>2]|0,e<<3)|0;d=a+92|0;e=c[d>>2]|0;if(e|0)Bh(e);e=Ah(c[b>>2]|0,16)|0;c[d>>2]=e;e=Ch(e)|0;c[a+96>>2]=e;a=a+100|0;c[a>>2]=_p(c[a>>2]|0,e<<3)|0;return}function Of(a){a=a|0;a=a+120|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;return}function Pf(a){a=a|0;Fe(c[a+12>>2]|0);qh(c[a+80>>2]|0);Bh(c[a+92>>2]|0);qh(c[a+108>>2]|0);Yp(c[a+64>>2]|0);Yp(c[a+68>>2]|0);Yp(c[a+88>>2]|0);Yp(c[a+100>>2]|0);Yp(c[a+116>>2]|0);Yp(a);return}function Qf(a){a=a|0;return c[a+128>>2]|0}function Rf(a){a=a|0;if(!(c[a+128>>2]|0)){Qp(25685,58,1,c[2348]|0)|0;a=0;return a|0}else{a=_((c[a+96>>2]|0)+64+(c[a+112>>2]|0)+(c[a+4>>2]<<1)|0,c[a>>2]|0)|0;return a|0}return 0}function Sf(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=b+120|0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;k=b+104|0;c[k>>2]=g;g=b+68|0;h=c[g>>2]|0;i=b+72|0;j=c[i>>2]|0;if(!e)eq(h|0,0,j|0)|0;else gq(h|0,e|0,j|0)|0;e=c[i>>2]|0;a[(c[g>>2]|0)+e>>0]=102;a[(c[g>>2]|0)+(e+1)>>0]=(c[k>>2]|0)>>>8;a[(c[g>>2]|0)+(e+2)>>0]=c[k>>2];a[(c[g>>2]|0)+(e+3)>>0]=c[b+44>>2];k=e+4|0;a[(c[g>>2]|0)+k>>0]=c[b+32>>2]<<5;k=(c[g>>2]|0)+k|0;a[k>>0]=d[k>>0]|0|c[b+36>>2]&31;a[(c[g>>2]|0)+(e+5)>>0]=c[b+40>>2]&31;e=b+88|0;xh(c[b+80>>2]|0,c[g>>2]|0,c[e>>2]|0);Dh(c[b+92>>2]|0,c[e>>2]|0,c[b+100>>2]|0);Lf(b);xh(c[b+108>>2]|0,f,c[b+116>>2]|0);c[b+128>>2]=1;return}function Tf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;if((i|0)>=(j|0))ba();f=q+16|0;g=q+8|0;h=q;if(!d){p=a+132|0;p=c[p>>2]|0;i=q;return p|0}k=a+124|0;l=g+4|0;m=a+12|0;n=a+16|0;o=h+4|0;e=c[k>>2]|0;p=0;do{if(!e){Uf(g,a);r=c[l>>2]|0;e=c[m>>2]|0;c[h>>2]=c[g>>2];c[o>>2]=r;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Je(e,f,n);e=c[k>>2]|0}r=c[a+16+(e<<3)+4>>2]|0;c[b+(p<<3)>>2]=c[a+16+(e<<3)>>2];c[b+(p<<3)+4>>2]=r;e=(((c[k>>2]|0)+1|0)>>>0)%((c[a>>2]|0)>>>0)|0;c[k>>2]=e;p=p+1|0}while((p|0)!=(d|0));r=a+132|0;r=c[r>>2]|0;i=q;return r|0} -function yj(a,b){a=a|0;b=b|0;var e=0,f=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0;P=i;i=i+464|0;if((i|0)>=(j|0))ba();N=P+456|0;M=P+432|0;J=P+416|0;I=P+400|0;E=P+392|0;H=P+384|0;G=P+368|0;F=P+352|0;D=P+328|0;C=P+304|0;B=P+280|0;A=P+256|0;y=P+232|0;x=P+208|0;w=P+192|0;v=P+184|0;u=P+160|0;t=P+136|0;s=P+112|0;r=P+88|0;q=P+80|0;p=P+72|0;o=P+64|0;n=P+56|0;O=P+48|0;K=P+40|0;k=P+32|0;m=P+24|0;l=P+16|0;f=P+8|0;e=P;if(!(c[a+172>>2]|0)){Qp(37231,86,1,c[2348]|0)|0;i=P;return}L=Ep(b,37318)|0;if(!L){O=c[2348]|0;c[e>>2]=b;Kp(O,37320,e)|0;i=P;return}c[f>>2]=37414;Kp(L,37385,f)|0;Qp(37445,11,1,L)|0;Qp(37457,11,1,L)|0;c[l>>2]=2048;Kp(L,37469,l)|0;c[m>>2]=c[a>>2];Kp(L,37478,m)|0;c[k>>2]=c[a+16>>2];Kp(L,37487,k)|0;z=a+20|0;c[K>>2]=c[z>>2];Kp(L,37502,K)|0;c[O>>2]=c[a+24>>2];Kp(L,37517,O)|0;Qp(37532,16,1,L)|0;if(c[a>>2]|0){e=a+12|0;f=0;do{m=d[(c[e>>2]|0)+f>>0]|0;f=f+1|0;c[n>>2]=f;c[n+4>>2]=m;Kp(L,37549,n)|0}while(f>>>0<(c[a>>2]|0)>>>0)}c[o>>2]=0;Kp(L,37563,o)|0;c[p>>2]=1;Kp(L,37587,p)|0;c[q>>2]=2;Kp(L,37611,q)|0;if(c[a>>2]|0){e=a+64|0;f=a+72|0;k=0;do{q=k;k=k+1|0;p=c[e>>2]|0;Q=+g[p+(q<<3)>>2];R=+g[p+(q<<3)+4>>2];c[r>>2]=k;h[r+8>>3]=Q;h[r+16>>3]=R;Kp(L,37635,r)|0;p=c[f>>2]|0;R=+g[p+(q<<3)>>2];Q=+g[p+(q<<3)+4>>2];c[s>>2]=k;h[s+8>>3]=R;h[s+16>>3]=Q;Kp(L,37665,s)|0}while(k>>>0<(c[a>>2]|0)>>>0)}Qp(37695,16,1,L)|0;sk(c[a+176>>2]|0,O);e=0;do{s=c[O>>2]|0;Q=+g[s+(e<<3)>>2];R=+g[s+(e<<3)+4>>2];e=e+1|0;c[t>>2]=e;h[t+8>>3]=Q;h[t+16>>3]=R;Kp(L,37712,t)|0}while((e|0)!=2048);Qp(37741,8,1,L)|0;Qp(37750,39,1,L)|0;Qp(37790,24,1,L)|0;Qp(37815,30,1,L)|0;Qp(37846,9,1,L)|0;if(c[a>>2]|0){e=a+76|0;f=0;do{t=c[e>>2]|0;Q=+g[t+(f<<3)>>2];R=+g[t+(f<<3)+4>>2];f=f+1|0;c[u>>2]=f;h[u+8>>3]=Q;h[u+16>>3]=R;Kp(L,37856,u)|0}while(f>>>0<(c[a>>2]|0)>>>0)}Qp(37886,2,1,L)|0;c[v>>2]=2048;Kp(L,37889,v)|0;nk(c[a+180>>2]|0,K);e=0;do{R=+g[(c[K>>2]|0)+(e<<2)>>2];e=e+1|0;c[w>>2]=e;h[w+8>>3]=R;Kp(L,37914,w)|0}while((e|0)!=2048);Qp(37939,91,1,L)|0;Qp(38031,33,1,L)|0;Qp(37741,8,1,L)|0;Qp(38065,15,1,L)|0;Qp(38081,21,1,L)|0;Qp(37886,2,1,L)|0;Qp(38103,17,1,L)|0;Qp(38121,17,1,L)|0;if(c[a>>2]|0){e=a+64|0;f=a+72|0;k=0;do{w=k;k=k+1|0;v=c[e>>2]|0;R=+g[v+(w<<3)>>2];Q=+g[v+(w<<3)+4>>2];c[x>>2]=k;h[x+8>>3]=R;h[x+16>>3]=Q;Kp(L,38139,x)|0;v=c[f>>2]|0;Q=+g[v+(w<<3)>>2];R=+g[v+(w<<3)+4>>2];c[y>>2]=k;h[y+8>>3]=Q;h[y+16>>3]=R;Kp(L,38169,y)|0}while(k>>>0<(c[a>>2]|0)>>>0)}Qp(37886,2,1,L)|0;Qp(38199,21,1,L)|0;Qp(38221,21,1,L)|0;Qp(38243,21,1,L)|0;Qp(38265,21,1,L)|0;if(c[a>>2]|0){k=a+84|0;l=a+88|0;e=a+188|0;f=a+92|0;m=0;do{y=m;m=m+1|0;x=c[k>>2]|0;R=+g[x+(y<<3)>>2];Q=+g[x+(y<<3)+4>>2];c[A>>2]=m;h[A+8>>3]=R;h[A+16>>3]=Q;Kp(L,38287,A)|0;x=c[l>>2]|0;Q=+g[x+(y<<3)>>2];R=+g[x+(y<<3)+4>>2];c[B>>2]=m;h[B+8>>3]=Q;h[B+16>>3]=R;Kp(L,38320,B)|0;x=c[e>>2]|0;R=+g[x+(y<<3)>>2];Q=+g[x+(y<<3)+4>>2];c[C>>2]=m;h[C+8>>3]=R;h[C+16>>3]=Q;Kp(L,38353,C)|0;x=c[f>>2]|0;Q=+g[x+(y<<3)>>2];R=+g[x+(y<<3)+4>>2];c[D>>2]=m;h[D+8>>3]=Q;h[D+16>>3]=R;Kp(L,38386,D)|0}while(m>>>0<(c[a>>2]|0)>>>0)}Qp(38419,15,1,L)|0;Qp(37741,8,1,L)|0;Qp(38435,16,1,L)|0;Qp(38452,40,1,L)|0;Qp(38493,48,1,L)|0;Qp(38542,11,1,L)|0;Qp(38554,30,1,L)|0;Qp(38585,33,1,L)|0;Qp(38619,16,1,L)|0;Qp(38636,58,1,L)|0;Qp(38695,48,1,L)|0;Qp(38542,11,1,L)|0;Qp(38554,30,1,L)|0;Qp(38744,35,1,L)|0;Qp(37886,2,1,L)|0;Qp(38780,23,1,L)|0;Qp(38804,23,1,L)|0;if(c[z>>2]|0){e=a+192|0;f=a+196|0;k=0;do{D=k;k=k+1|0;R=+g[(c[e>>2]|0)+(D<<2)>>2];c[F>>2]=k;h[F+8>>3]=R;Kp(L,38828,F)|0;R=+g[(c[f>>2]|0)+(D<<2)>>2];c[G>>2]=k;h[G+8>>3]=R;Kp(L,38847,G)|0}while(k>>>0<(c[z>>2]|0)>>>0)}h[H>>3]=+g[a+200>>2];Kp(L,38866,H)|0;h[E>>3]=+g[a+204>>2];Kp(L,38888,E)|0;Qp(38910,17,1,L)|0;nk(c[a+208>>2]|0,K);e=0;do{R=+g[(c[K>>2]|0)+(e<<2)>>2];e=e+1|0;c[I>>2]=e;h[I+8>>3]=R;Kp(L,38928,I)|0}while((e|0)!=2048);Qp(38947,17,1,L)|0;nk(c[a+212>>2]|0,K);e=0;do{R=+g[(c[K>>2]|0)+(e<<2)>>2];e=e+1|0;c[J>>2]=e;h[J+8>>3]=R;Kp(L,38965,J)|0}while((e|0)!=2048);Qp(37741,8,1,L)|0;Qp(38984,19,1,L)|0;Qp(39004,16,1,L)|0;Qp(39021,24,1,L)|0;Qp(39046,40,1,L)|0;Qp(38542,11,1,L)|0;Qp(39087,32,1,L)|0;Qp(39120,24,1,L)|0;Qp(39145,19,1,L)|0;Qp(39165,16,1,L)|0;Qp(39182,26,1,L)|0;Qp(38542,11,1,L)|0;Qp(39209,31,1,L)|0;Qp(39241,16,1,L)|0;Qp(39258,26,1,L)|0;Qp(38542,11,1,L)|0;Qp(39285,30,1,L)|0;Qp(39316,24,1,L)|0;sk(c[a+184>>2]|0,O);e=0;do{K=c[O>>2]|0;Q=+g[K+(e<<3)>>2];R=+g[K+(e<<3)+4>>2];e=e+1|0;c[M>>2]=e;h[M+8>>3]=Q;h[M+16>>3]=R;Kp(L,39341,M)|0}while((e|0)!=2048);Qp(37741,8,1,L)|0;Qp(39378,45,1,L)|0;Qp(39424,13,1,L)|0;Qp(39438,13,1,L)|0;Qp(39452,23,1,L)|0;Qp(39476,13,1,L)|0;Qp(39490,9,1,L)|0;Hp(L)|0;c[N>>2]=b;Rp(39500,N)|0;i=P;return}function zj(a){a=a|0;var b=0,d=0,e=0,f=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();e=f;d=Xp(1060)|0;c[d>>2]=a;a=d+12|0;b=0;do{g[a+(b<<2)>>2]=+R(+(+(b>>>0)*6.283185307179586*.00390625));b=b+1|0}while((b|0)!=256);g[d+1052>>2]=.10000000149011612;g[d+1056>>2]=.3162277638912201;a=c[d>>2]|0;switch(a|0){case 0:{c[d+1048>>2]=7;break}case 1:{c[d+1048>>2]=8;break}default:{b=c[2348]|0;c[e>>2]=a;Kp(b,39546,e)|0;kb(1)}}g[d+4>>2]=0.0;g[d+8>>2]=0.0;c[d+1036>>2]=0;g[d+1040>>2]=0.0;g[d+1044>>2]=1.0;i=f;return d|0}function Aj(a){a=a|0;var b=0,d=0;b=~~(+g[a+4>>2]*40.7436637878418+512.0+.5)>>>0;d=b&255;c[a+1036>>2]=d;c[a+1040>>2]=c[a+12+(d<<2)>>2];c[a+1044>>2]=c[a+12+((b+64&255)<<2)>>2];return}function Bj(a){a=a|0;var b=0.0;b=+g[a+4>>2];g[a+1040>>2]=+R(+b);g[a+1044>>2]=+Q(+b);return}function Cj(a,b){a=a|0;b=+b;if(b<0.0){Qp(39588,59,1,c[2348]|0)|0;kb(1)}else{g[a+1052>>2]=b;g[a+1056>>2]=+O(+b);return}}function Dj(a){a=a|0;g[a+4>>2]=0.0;g[a+8>>2]=0.0;c[a+1036>>2]=0;g[a+1040>>2]=0.0;g[a+1044>>2]=1.0;return}function Ej(a){a=a|0;Yp(a);return}function Fj(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function Gj(a,b){a=a|0;b=+b;a=a+8|0;g[a>>2]=+g[a>>2]+b;return}function Hj(a,b){a=a|0;b=+b;a=a+4|0;g[a>>2]=b;if(b>3.141592653589793){g[a>>2]=b+-6.283185307179586;return}if(!(b<-3.141592653589793))return;g[a>>2]=b+6.283185307179586;return}function Ij(a){a=a|0;var b=0.0,c=0;c=a+4|0;b=+g[a+8>>2]+ +g[c>>2];g[c>>2]=b;if(b>3.141592653589793){g[c>>2]=b+-6.283185307179586;return}if(!(b<-3.141592653589793))return;g[c>>2]=b+6.283185307179586;return}function Jj(a){a=a|0;return +(+g[a+8>>2])}function Kj(a,b){a=a|0;b=+b;var c=0;c=a+8|0;g[c>>2]=+g[c>>2]+ +g[a+1052>>2]*b;c=a+4|0;b=+g[c>>2]+ +g[a+1056>>2]*b;g[c>>2]=b;if(b>3.141592653589793){g[c>>2]=b+-6.283185307179586;return}if(!(b<-3.141592653589793))return;g[c>>2]=b+6.283185307179586;return}function Lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();m=o;qb[c[a+1048>>2]&31](a);n=+g[b>>2];k=+g[b+4>>2];l=+g[a+1040>>2];e=+g[a+1044>>2]+l*0.0;f=n*e-k*l;h=n*l+k*e;if(!((f!=f|0.0!=0.0)&(h!=h|0.0!=0.0))){l=f;n=h;m=d+4|0;g[d>>2]=l;g[m>>2]=n;i=o;return}ao(m,n,k,e,l);l=+g[m>>2];n=+g[m+4>>2];m=d+4|0;g[d>>2]=l;g[m>>2]=n;i=o;return}function Mj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();m=o;qb[c[a+1048>>2]&31](a);n=+g[b>>2];l=+g[b+4>>2];f=+g[a+1040>>2];e=+g[a+1044>>2]-f*0.0;f=-f;h=n*e-l*f;k=n*f+l*e;if(!((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0))){l=h;n=k;m=d+4|0;g[d>>2]=l;g[m>>2]=n;i=o;return}ao(m,n,l,e,f);l=+g[m>>2];n=+g[m+4>>2];m=d+4|0;g[d>>2]=l;g[m>>2]=n;i=o;return}function Nj(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0;e=c&-4;if(!e)f=0;else{f=c&-4;g=0;do{h=b+g|0;a[h>>0]=(d[h>>0]|0)^180;h=b+(g|1)|0;a[h>>0]=(d[h>>0]|0)^106;h=b+(g|2)|0;a[h>>0]=(d[h>>0]|0)^139;h=b+(g|3)|0;a[h>>0]=(d[h>>0]|0)^197;g=g+4|0}while(g>>>0>>0)}if(f>>>0>>0){h=b+f|0;a[h>>0]=(d[h>>0]|0)^180}e=f|1;if(e>>>0>>0){h=b+e|0;a[h>>0]=(d[h>>0]|0)^106}e=f|2;if(e>>>0>>0){h=b+e|0;a[h>>0]=(d[h>>0]|0)^139}e=f|3;if(e>>>0>=c>>>0)return;h=b+e|0;a[h>>0]=(d[h>>0]|0)^197;return}function Oj(a,b){a=a|0;b=b|0;Nj(a,b);return}function Pj(b,c){b=b|0;c=c|0;var e=0,f=0,g=0,h=0,i=0;if(!c)return;else g=0;a:while(1){switch(g&3|0){case 0:{e=180;h=7;break}case 1:{f=g<<3;e=106;h=8;break}case 2:{e=139;h=7;break}case 3:{e=197;h=7;break}default:{h=6;break a}}if((h|0)==7){h=0;f=g<<3;i=b+f|0;a[i>>0]=(d[i>>0]|0)^255;if(e&64)h=8}if((h|0)==8){i=b+(f|1)|0;a[i>>0]=(d[i>>0]|0)^255}if(e&32|0){i=b+(g<<3|2)|0;a[i>>0]=(d[i>>0]|0)^255}if(e&16|0){i=b+(g<<3|3)|0;a[i>>0]=(d[i>>0]|0)^255}if(e&8|0){i=b+(g<<3|4)|0;a[i>>0]=(d[i>>0]|0)^255}if(e&4|0){i=b+(g<<3|5)|0;a[i>>0]=(d[i>>0]|0)^255}if(e&2|0){i=b+(g<<3|6)|0;a[i>>0]=(d[i>>0]|0)^255}if(e&1|0){i=b+(g<<3|7)|0;a[i>>0]=(d[i>>0]|0)^255}g=g+1|0;if(g>>>0>=c>>>0){h=22;break}}if((h|0)!=6)if((h|0)==22)return}function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((a+-2|0)>>>0>13){Qp(39648,42,1,c[2348]|0)|0;kb(1)}g=Xp(24)|0;c[g>>2]=a;c[g+4>>2]=b>>>1;f=g+8|0;c[f>>2]=0;if(!a)b=0;else{b=0;e=0;while(1){b=b<<1|d&1;e=e+1|0;if(e>>>0>=a>>>0)break;else d=d>>>1}c[f>>2]=b}c[g+12>>2]=(1<>2]=b;c[g+20>>2]=0;return g|0}function Rj(a){a=a|0;var b=0;if((a+-2|0)>>>0>13){Qp(39648,42,1,c[2348]|0)|0;kb(1)}else{b=Xp(24)|0;a=7520+(a*24|0)|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];c[b+16>>2]=c[a+16>>2];c[b+20>>2]=c[a+20>>2];return b|0}return 0}function Sj(a){a=a|0;Yp(a);return}function Tj(a){a=a|0;var b=0,d=0;d=a+16|0;b=Wj(c[d>>2]|0,c[a+4>>2]|0)|0;c[a+20>>2]=b;c[d>>2]=(c[d>>2]<<1|b)&c[a+12>>2];return b|0}function Uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!b){b=0;return b|0}g=a+16|0;h=a+4|0;i=a+20|0;d=a+12|0;e=c[g>>2]|0;f=0;a=0;do{j=Wj(e,c[h>>2]|0)|0;c[i>>2]=j;e=(c[g>>2]<<1|j)&c[d>>2];c[g>>2]=e;a=j|a<<1;f=f+1|0}while((f|0)!=(b|0));return a|0}function Vj(a){a=a|0;c[a+16>>2]=c[a+8>>2];return}function Wj(a,b){a=a|0;b=b|0;b=b&a;return (d[39947+(b>>>8&255)>>0]|0)+(d[39947+(b&255)>>0]|0)+(d[39947+(b>>>16&255)>>0]|0)+(d[39947+(b>>>24)>>0]|0)&1|0}function Xj(a){a=a|0;return (d[40203+(a&255)>>0]|0)<<8|(d[40203+(a>>>8&255)>>0]|0)|0}function Yj(a){a=a|0;return (d[40203+(a>>>8&255)>>0]|0)<<8|(d[40203+(a&255)>>0]|0)<<16|(d[40203+(a>>>16&255)>>0]|0)|0}function Zj(a){a=a|0;return (d[40203+(a>>>8&255)>>0]|0)<<16|(d[40203+(a&255)>>0]|0)<<24|(d[40203+(a>>>16&255)>>0]|0)<<8|(d[40203+(a>>>24)>>0]|0)|0}function _j(a){a=a|0;var b=0;b=a>>>24;if(!b){b=a>>>16&255;if(!b){b=a>>>8&255;if(!b){b=a&255;if(!b){a=0;return a|0}else a=8}else a=16}else a=24}else a=32;a=a-(c[7904+(b<<2)>>2]|0)|0;return a|0}function $j(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;if(e<<3>>>0<=f>>>0){Qp(40459,59,1,c[2348]|0)|0;kb(1)}i=f>>>3;if(!(i>>>0>>0&(g|0)!=0))return;f=f-(i<<3)|0;j=i;while(1){k=8-f|0;k=g>>>0>>0?g:k;m=8-k|0;l=g;g=g-k|0;n=255>>>m&255;m=m-f|0;i=b+j|0;a[i>>0]=(d[i>>0]|0)&(n<>>g)<>>0>7;j=(i&1)+j|0;if(!(j>>>0>>0&(l|0)!=(k|0)))break;else f=i?f&7:f}return}function ak(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;if(b<<3>>>0<=e>>>0){Qp(40519,61,1,c[2348]|0)|0;kb(1)}h=e>>>3;if(!(h>>>0>>0&(f|0)!=0)){a=f;b=0;a=b<>2]=a;return}k=f;e=e-(h<<3)|0;f=0;while(1){i=8-e|0;l=k>>>0>>0?k:i;f=255>>>(8-l|0)&255&(d[a+h>>0]|0)>>>(i-l|0)|f<>>0>7;h=(j&1)+h|0;e=k-l|0;if(!(h>>>0>>0&(k|0)!=(l|0)))break;else{k=e;e=j?i&7:i}}l=f<>2]=l;return}function bk(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=b<<3;if(!((f|0)!=0&(n|0)!=0))return;if(!e){h=(n|0)!=0;i=0;do{c[g+(i<<2)>>2]=0;i=i+1|0}while(i>>>0>>0&h);return}else{p=0;q=0}do{o=g+(p<<2)|0;h=q>>>3;if(h>>>0>>0){m=e;i=q-(h<<3)|0;l=h;h=0;while(1){j=8-i|0;r=m>>>0>>0?m:j;h=255>>>(8-r|0)&255&(d[a+l>>0]|0)>>>(j-r|0)|h<>>0>7;l=(k&1)+l|0;i=m-r|0;if(!((m|0)!=(r|0)&l>>>0>>0))break;else{m=i;i=k?j&7:j}}}else{i=e;h=0}c[o>>2]=h<>>0>>0&q>>>0>>0);return}function ck(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();m=o;Vp(m,e,8);if((((c[m+4>>2]|0)>0&1)+(c[m>>2]|0)|0)>>>0>g>>>0){Qp(40581,38,1,c[2348]|0)|0;kb(-1)}if(!e){n=0;c[h>>2]=n;i=o;return}else{m=0;g=0}a:while(1){k=0;while(1){k=(d[b+g>>0]|0)&1|k&254;g=g+1|0;if(!(g&7)){l=k;break}if(g>>>0>>0)k=k<<1;else{b=k;k=m;n=8;break a}}k=m+1|0;a[f+m>>0]=l;if(g>>>0>>0)m=k;else{l=g;g=0;break}}if((n|0)==8){l=g;g=b&127}if(!(l&7)){n=k;c[h>>2]=n;i=o;return}a[f+k>>0]=g;n=k+1|0;c[h>>2]=n;i=o;return}function dk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;h=d<<3;if(h>>>0>f>>>0){Qp(40620,40,1,c[2348]|0)|0;kb(-1)}if(!d){e=0;c[g>>2]=e;return}else{f=0;i=0}while(1){k=a[b+f>>0]|0;j=k&255;a[e+i>>0]=(k&255)>>>7;a[e+(i|1)>>0]=j>>>6&1;a[e+(i|2)>>0]=j>>>5&1;a[e+(i|3)>>0]=j>>>4&1;a[e+(i|4)>>0]=j>>>3&1;a[e+(i|5)>>0]=j>>>2&1;a[e+(i|6)>>0]=j>>>1&1;a[e+(i|7)>>0]=j&1;f=f+1|0;if((f|0)==(d|0))break;else i=i+8|0}c[g>>2]=h;return}function ek(b,d,e,f,g,h,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+32|0;if((i|0)>=(j|0))ba();l=v;u=v+16|0;t=_(e,d)|0;Vp(u,t,g);u=((c[u+4>>2]|0)>0&1)+(c[u>>2]|0)|0;if(u>>>0>h>>>0){s=c[2348]|0;Qp(40661,40,1,s)|0;c[l>>2]=e;c[l+4>>2]=d;c[l+8>>2]=h;c[l+12>>2]=g;Kp(s,40702,l)|0;kb(-1)}if(!t){l=0;h=0;e=0}else{p=d+-1|0;o=g+-1|0;q=0;n=0;l=0;s=0;h=0;m=0;e=0;while(1){if(!s){r=n+1|0;m=a[b+n>>0]|0}else r=n;e=((m&255)>>>(p-s|0)&1|(e&255)<<1)&255;if((h|0)==(o|0)){a[f+l>>0]=e;l=l+1|0;e=0}h=((h+1|0)>>>0)%(g>>>0)|0;q=q+1|0;if((q|0)==(t|0))break;else{n=r;s=((s+1|0)>>>0)%(d>>>0)|0}}}if((l|0)==(u|0)){f=u;c[k>>2]=f;i=v;return}if(h>>>0>>0)do{e=(e&255)<<1&255;h=h+1|0}while((h|0)!=(g|0));a[f+l>>0]=e;f=l+1|0;c[k>>2]=f;i=v;return}function fk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+48|0;if((i|0)>=(j|0))ba();p=A+32|0;q=A+24|0;v=A+16|0;w=A+8|0;z=A;x=b&-4;if(!x)e=0;else{m=+g[c>>2];o=+g[c+4>>2];r=p+4|0;s=q+4|0;t=v+4|0;u=w+4|0;e=b&-4;y=0;do{k=+g[a+(y<<3)>>2];l=+g[a+(y<<3)+4>>2];h=k*m-l*o;f=l*m+k*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(p,k,l,m,o);h=+g[p>>2];f=+g[r>>2]}g[d+(y<<3)>>2]=h;g[d+(y<<3)+4>>2]=f;n=y|1;k=+g[a+(n<<3)>>2];l=+g[a+(n<<3)+4>>2];h=k*m-l*o;f=l*m+k*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(q,k,l,m,o);h=+g[q>>2];f=+g[s>>2]}g[d+(n<<3)>>2]=h;g[d+(n<<3)+4>>2]=f;n=y|2;k=+g[a+(n<<3)>>2];l=+g[a+(n<<3)+4>>2];h=k*m-l*o;f=l*m+k*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(v,k,l,m,o);h=+g[v>>2];f=+g[t>>2]}g[d+(n<<3)>>2]=h;g[d+(n<<3)+4>>2]=f;n=y|3;k=+g[a+(n<<3)>>2];l=+g[a+(n<<3)+4>>2];h=k*m-l*o;f=l*m+k*o;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(w,k,l,m,o);h=+g[w>>2];f=+g[u>>2]}g[d+(n<<3)>>2]=h;g[d+(n<<3)+4>>2]=f;y=y+4|0}while(y>>>0>>0)}if(e>>>0>=b>>>0){i=A;return}o=+g[c>>2];m=+g[c+4>>2];n=z+4|0;do{l=+g[a+(e<<3)>>2];k=+g[a+(e<<3)+4>>2];h=l*o-k*m;f=k*o+l*m;if((h!=h|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(z,l,k,o,m);h=+g[z>>2];f=+g[n>>2]}g[d+(e<<3)>>2]=h;g[d+(e<<3)+4>>2]=f;e=e+1|0}while((e|0)!=(b|0));i=A;return}function gk(a){a=a|0;var b=0,d=0;b=Xp(12)|0;c[b+4>>2]=a;a=a<<2;d=Xp(a)|0;c[b>>2]=d;c[b+8>>2]=0;eq(d|0,0,a|0)|0;return b|0}function hk(a){a=a|0;c[a+8>>2]=0;eq(c[a>>2]|0,0,c[a+4>>2]<<2|0)|0;return}function ik(a){a=a|0;Yp(c[a>>2]|0);Yp(a);return}function jk(a,b){a=a|0;b=+b;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;g[(c[a>>2]|0)+(e<<2)>>2]=b;c[d>>2]=((e+1|0)>>>0)%((c[a+4>>2]|0)>>>0)|0;return}function kk(a,b){a=a|0;b=b|0;c[b>>2]=c[(c[a>>2]|0)+(c[a+8>>2]<<2)>>2];return}function lk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;if(!a){d=c[2348]|0;c[b>>2]=40764;Kp(d,40769,b)|0;kb(1)}else{b=Xp(28)|0;c[b+4>>2]=a;e=_j(a)|0;c[b+8>>2]=e;e=1<>2]=e;e=e+-1|0;c[b+16>>2]=e;a=e+a|0;c[b+20>>2]=a;a=a<<2;e=Xp(a)|0;c[b>>2]=e;c[b+24>>2]=0;eq(e|0,0,a|0)|0;i=d;return b|0}return 0}function mk(a){a=a|0;c[a+24>>2]=0;eq(c[a>>2]|0,0,c[a+20>>2]<<2|0)|0;return}function nk(a,b){a=a|0;b=b|0;c[b>>2]=(c[a>>2]|0)+(c[a+24>>2]<<2);return}function ok(a,b){a=a|0;b=+b;var d=0,e=0,f=0;e=a+24|0;d=c[a+16>>2]&(c[e>>2]|0)+1;c[e>>2]=d;if(!d){f=c[a>>2]|0;d=a+4|0;gq(f|0,f+(c[a+12>>2]<<2)|0,(c[d>>2]<<2)+-4|0)|0;f=a;a=d;d=c[e>>2]|0}else{f=a;a=a+4|0}g[(c[f>>2]|0)+(d+-1+(c[a>>2]|0)<<2)>>2]=b;return}function pk(a){a=a|0;Yp(c[a>>2]|0);Yp(a);return}function qk(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();b=d;if(!a){d=c[2348]|0;c[b>>2]=40766;Kp(d,40769,b)|0;kb(1)}else{b=Xp(28)|0;c[b+4>>2]=a;e=_j(a)|0;c[b+8>>2]=e;e=1<>2]=e;e=e+-1|0;c[b+16>>2]=e;a=e+a|0;c[b+20>>2]=a;a=a<<3;e=Xp(a)|0;c[b>>2]=e;c[b+24>>2]=0;eq(e|0,0,a|0)|0;i=d;return b|0}return 0}function rk(a){a=a|0;c[a+24>>2]=0;eq(c[a>>2]|0,0,c[a+20>>2]<<3|0)|0;return}function sk(a,b){a=a|0;b=b|0;c[b>>2]=(c[a>>2]|0)+(c[a+24>>2]<<3);return}function tk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+24|0;d=c[a+16>>2]&(c[e>>2]|0)+1;c[e>>2]=d;if(!d){f=c[a>>2]|0;d=a+4|0;gq(f|0,f+(c[a+12>>2]<<3)|0,(c[d>>2]<<3)+-8|0)|0;f=a;a=d;d=c[e>>2]|0}else{f=a;a=a+4|0}g=c[b+4>>2]|0;e=d+-1+(c[a>>2]|0)|0;f=c[f>>2]|0;c[f+(e<<3)>>2]=c[b>>2];c[f+(e<<3)+4>>2]=g;return}function uk(a){a=a|0;Yp(c[a>>2]|0);Yp(a);return}function vk(a,b){a=a|0;b=b|0;var d=0,e=0;d=Xp(8)|0;c[d+4>>2]=b;b=b<<2;e=Xp(b)|0;c[d>>2]=e;fq(e|0,a|0,b|0)|0;return d|0}function wk(a){a=a|0;Yp(c[a>>2]|0);Yp(a);return}function xk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0.0;i=c[a>>2]|0;a=c[a+4>>2]|0;if(!a){f=0.0;e=0.0}else{h=0;f=0.0;e=0.0;do{j=+g[i+(h<<2)>>2];f=f+j*+g[b+(h<<3)>>2];e=e+j*+g[b+(h<<3)+4>>2];h=h+1|0}while((h|0)!=(a|0))}g[d>>2]=f;g[d+4>>2]=e;return}function yk(a,b){a=a|0;b=b|0;var d=0,e=0;d=Xp(8)|0;c[d+4>>2]=b;b=b<<2;e=Xp(b)|0;c[d>>2]=e;fq(e|0,a|0,b|0)|0;return d|0}function zk(a){a=a|0;Yp(c[a>>2]|0);Yp(a);return}function Ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0;h=c[a>>2]|0;a=c[a+4>>2]|0;if(!a){e=0.0;g[d>>2]=e;return}else{f=0;e=0.0}do{e=e+ +g[h+(f<<2)>>2]*+g[b+(f<<2)>>2];f=f+1|0}while((f|0)!=(a|0));g[d>>2]=e;return}function Bk(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0;e=b<<1;b=e&-4;if(!b){b=0;c=0.0}else{d=0;c=0.0;do{j=+g[a+(d<<2)>>2];i=+g[a+((d|1)<<2)>>2];h=+g[a+((d|2)<<2)>>2];f=+g[a+((d|3)<<2)>>2];c=c+j*j+i*i+h*h+f*f;d=d+4|0}while(d>>>0>>0)}if(b>>>0>=e>>>0){j=c;return +j}do{j=+g[a+(b<<2)>>2];c=c+j*j;b=b+1|0}while((b|0)!=(e|0));return +c}function Ck(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Xp(36)|0;c[g>>2]=a;f=Kc(e,Kc(d,(Ec(b)|0)+a|0)|0)|0;c[g+4>>2]=f;c[g+8>>2]=b;b=Ec(b)|0;c[g+12>>2]=b;c[g+24>>2]=f;f=f<<3;c[g+28>>2]=Xp(f)|0;c[g+32>>2]=Xp(f)|0;c[g+20>>2]=2;f=Xp(40)|0;c[g+16>>2]=f;b=b+a|0;h=f+8|0;c[h>>2]=d;c[f>>2]=b;a=f+4|0;c[a>>2]=Kc(d,b)|0;c[f+12>>2]=Nc(c[h>>2]|0,0)|0;b=Jl(c[a>>2]|0)|0;c[f+16>>2]=b;if((c[h>>2]|0)==1)Ll(b,0);d=c[a>>2]|0;h=f+28|0;c[h>>2]=e;c[f+20>>2]=d;b=f+24|0;c[b>>2]=Kc(e,d)|0;c[f+32>>2]=Nc(c[h>>2]|0,0)|0;b=Jl(c[b>>2]|0)|0;c[f+36>>2]=b;if((c[h>>2]|0)!=1)return g|0;Ll(b,0);return g|0}function Dk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if(!a){a=Ck(b,d,e,f)|0;return a|0}if((((c[a>>2]|0)==(b|0)?(c[a+8>>2]|0)==(d|0):0)?(g=c[a+16>>2]|0,(c[g+8>>2]|0)==(e|0)):0)?(c[g+28>>2]|0)==(f|0):0)return a|0;Ek(a);a=Ck(b,d,e,f)|0;return a|0}function Ek(a){a=a|0;var b=0,d=0,e=0;b=a+20|0;d=a+16|0;if(c[b>>2]|0){e=0;do{Oc(c[(c[d>>2]|0)+(e*20|0)+12>>2]|0);Kl(c[(c[d>>2]|0)+(e*20|0)+16>>2]|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Yp(c[d>>2]|0);Yp(c[a+28>>2]|0);Yp(c[a+32>>2]|0);Yp(a);return}function Fk(a){a=a|0;return c[a+4>>2]|0}function Gk(a){a=a|0;return c[a+8>>2]|0}function Hk(a){a=a|0;return c[(c[a+16>>2]|0)+8>>2]|0}function Ik(a){a=a|0;return c[(c[a+16>>2]|0)+28>>2]|0}function Jk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=b+28|0;f=c[i>>2]|0;g=c[b>>2]|0;if(!d)eq(f|0,0,g|0)|0;else gq(f|0,d|0,g|0)|0;g=Fc(c[b+8>>2]|0,c[i>>2]|0,c[b>>2]|0)|0;h=b+12|0;f=c[h>>2]|0;if(!f)f=0;else{d=0;while(1){a[(c[i>>2]|0)+(f+~d+(c[b>>2]|0))>>0]=g;d=d+1|0;f=c[h>>2]|0;if(d>>>0>=f>>>0)break;else g=g>>>8}}Nj(c[i>>2]|0,(c[b>>2]|0)+f|0);f=b+20|0;if(!(c[f>>2]|0)){i=c[i>>2]|0;b=b+4|0;b=c[b>>2]|0;gq(e|0,i|0,b|0)|0;return}g=b+16|0;d=b+32|0;h=0;do{j=c[g>>2]|0;Pc(c[j+(h*20|0)+12>>2]|0,c[j+(h*20|0)>>2]|0,c[i>>2]|0,c[d>>2]|0);Ml(c[(c[g>>2]|0)+(h*20|0)+16>>2]|0,c[d>>2]|0,c[i>>2]|0);h=h+1|0}while(h>>>0<(c[f>>2]|0)>>>0);i=c[i>>2]|0;j=b+4|0;j=c[j>>2]|0;gq(e|0,i|0,j|0)|0;return}function Kk(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a+28|0;gq(c[j>>2]|0,b|0,c[a+4>>2]|0)|0;b=c[a+20>>2]|0;if(b|0){f=a+16|0;g=a+32|0;do{b=b+-1|0;Nl(c[(c[f>>2]|0)+(b*20|0)+16>>2]|0,c[j>>2]|0,c[g>>2]|0);i=c[f>>2]|0;Qc(c[i+(b*20|0)+12>>2]|0,c[i+(b*20|0)>>2]|0,c[g>>2]|0,c[j>>2]|0)}while((b|0)!=0)}h=a+12|0;Oj(c[j>>2]|0,(c[h>>2]|0)+(c[a>>2]|0)|0);h=c[h>>2]|0;if(!h){g=c[j>>2]|0;h=c[a>>2]|0;i=0;gq(e|0,g|0,h|0)|0;h=a+8|0;h=c[h>>2]|0;e=c[j>>2]|0;a=c[a>>2]|0;a=Ic(h,e,a,i)|0;return a|0}f=c[a>>2]|0;g=c[j>>2]|0;i=0;b=0;do{b=d[g+(f+i)>>0]|0|b<<8;i=i+1|0}while(i>>>0>>0);gq(e|0,g|0,f|0)|0;i=a+8|0;i=c[i>>2]|0;e=c[j>>2]|0;a=c[a>>2]|0;a=Ic(i,e,a,b)|0;return a|0}function Lk(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a+28|0;gq(c[j>>2]|0,b|0,c[a+4>>2]<<3|0)|0;i=a+16|0;h=a+32|0;Ol(c[(c[i>>2]|0)+36>>2]|0,c[j>>2]|0,c[h>>2]|0);g=c[i>>2]|0;Rc(c[g+32>>2]|0,c[g+20>>2]|0,c[h>>2]|0,c[j>>2]|0);Nl(c[(c[i>>2]|0)+16>>2]|0,c[j>>2]|0,c[h>>2]|0);i=c[i>>2]|0;Qc(c[i+12>>2]|0,c[i>>2]|0,c[h>>2]|0,c[j>>2]|0);h=a+12|0;Oj(c[j>>2]|0,(c[h>>2]|0)+(c[a>>2]|0)|0);h=c[h>>2]|0;if(!h){g=c[j>>2]|0;h=c[a>>2]|0;i=0;gq(e|0,g|0,h|0)|0;h=a+8|0;h=c[h>>2]|0;e=c[j>>2]|0;a=c[a>>2]|0;a=Ic(h,e,a,i)|0;return a|0}f=c[a>>2]|0;g=c[j>>2]|0;i=0;b=0;do{b=d[g+(f+i)>>0]|0|b<<8;i=i+1|0}while(i>>>0>>0);gq(e|0,g|0,f|0)|0;i=a+8|0;i=c[i>>2]|0;e=c[j>>2]|0;a=c[a>>2]|0;a=Ic(i,e,a,b)|0;return a|0}function Mk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(gl(a)|0){case 1:{d=Nk(a,b,d,e,f)|0;return d|0}case 2:{d=Pk(a,b,d,e,f)|0;return d|0}case 3:{d=Rk(a,b,d,e,f)|0;return d|0}case 4:{d=Tk(a,b,d,e,f)|0;return d|0}case 5:{d=Vk(a,b,d,e,f)|0;return d|0}default:{Qp(41014,53,1,c[2348]|0)|0;kb(1)}}return 0}function Nk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=i;i=i+32|0;if((i|0)>=(j|0))ba();q=u+24|0;p=u+16|0;r=u+8|0;s=u;t=Xp(72)|0;c[t>>2]=a;c[t+4>>2]=b;c[t+8>>2]=d;c[t+16>>2]=f;e=(e|0)==1?1:-1;c[t+20>>2]=e;d=t+12|0;c[d>>2]=e;c[t+24>>2]=1;c[t+28>>2]=9;f=(_j(a)|0)+-1|0;c[t+40>>2]=f;b=Xp(a<<2)|0;c[t+44>>2]=b;if(!a){f=0;o=0}else{e=0;do{c[b+(e<<2)>>2]=hl(e,f)|0;e=e+1|0}while(e>>>0>>0);f=a<<3;e=c[d>>2]|0;o=c[t>>2]|0}a=Xp(f)|0;c[t+48>>2]=a;k=(e|0)==1?-1.0:1.0;if(!o){i=u;return t|0}l=k*0.0;h=l*2.0-l;m=k*2.0+l*0.0;f=p+4|0;n=+(o>>>0);b=s+4|0;d=r+4|0;if((h!=h|0.0!=0.0)&(m!=m|0.0!=0.0)){e=0;do{ao(p,l,k,2.0,0.0);h=+(e>>>0);m=h*(+g[f>>2]*3.141592653589793)/n;g[s>>2]=h*(+g[p>>2]*3.141592653589793)/n;g[b>>2]=m;c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];Io(r,q);v=c[d>>2]|0;c[a+(e<<3)>>2]=c[r>>2];c[a+(e<<3)+4>>2]=v;e=e+1|0}while(e>>>0>>0);i=u;return t|0}k=h*3.141592653589793;h=m*3.141592653589793;e=0;do{m=+(e>>>0);g[s>>2]=m*k/n;g[b>>2]=m*h/n;c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];Io(r,q);v=c[d>>2]|0;c[a+(e<<3)>>2]=c[r>>2];c[a+(e<<3)+4>>2]=v;e=e+1|0}while(e>>>0>>0);i=u;return t|0}function Ok(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=i;i=i+16|0;if((i|0)>=(j|0))ba();y=z;d=c[a>>2]&-4;if(!d)b=a+8|0;else{e=a+44|0;f=a+4|0;b=a+8|0;h=0;do{u=c[(c[e>>2]|0)+(h<<2)>>2]|0;w=c[f>>2]|0;t=c[w+(u<<3)+4>>2]|0;x=c[b>>2]|0;c[x+(h<<3)>>2]=c[w+(u<<3)>>2];c[x+(h<<3)+4>>2]=t;x=h|1;t=c[(c[e>>2]|0)+(x<<2)>>2]|0;u=c[f>>2]|0;w=c[u+(t<<3)+4>>2]|0;v=c[b>>2]|0;c[v+(x<<3)>>2]=c[u+(t<<3)>>2];c[v+(x<<3)+4>>2]=w;x=h|2;v=c[(c[e>>2]|0)+(x<<2)>>2]|0;w=c[f>>2]|0;t=c[w+(v<<3)+4>>2]|0;u=c[b>>2]|0;c[u+(x<<3)>>2]=c[w+(v<<3)>>2];c[u+(x<<3)+4>>2]=t;x=h|3;u=c[(c[e>>2]|0)+(x<<2)>>2]|0;t=c[f>>2]|0;v=c[t+(u<<3)+4>>2]|0;w=c[b>>2]|0;c[w+(x<<3)>>2]=c[t+(u<<3)>>2];c[w+(x<<3)+4>>2]=v;h=h+4|0}while(h>>>0>>0)}u=c[b>>2]|0;v=a+40|0;b=c[v>>2]|0;if(!b){i=z;return}t=c[a>>2]|0;w=a+48|0;x=y+4|0;d=t;r=0;s=1;do{q=s;s=s<<1;t=t>>>1;if(q){f=0;h=0;do{e=c[w>>2]|0;o=+g[e+(h<<3)>>2];p=+g[e+(h<<3)+4>>2];h=((h+t|0)>>>0)%(d>>>0)|0;if(f>>>0>>0){e=f;do{d=e+q|0;b=u+(d<<3)|0;m=+g[b>>2];d=u+(d<<3)+4|0;n=+g[d>>2];l=o*m-p*n;k=p*m+o*n;if((l!=l|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(y,m,n,o,p);l=+g[y>>2];k=+g[x>>2]}B=u+(e<<3)|0;A=u+(e<<3)+4|0;n=+g[A>>2]-k;g[b>>2]=+g[B>>2]-l;g[d>>2]=n;n=k+ +g[A>>2];g[B>>2]=l+ +g[B>>2];g[A>>2]=n;e=e+s|0;d=c[a>>2]|0}while(e>>>0>>0)}f=f+1|0}while((f|0)!=(q|0));b=c[v>>2]|0}r=r+1|0}while(r>>>0>>0);i=z;return}function Pk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=i;i=i+224|0;if((i|0)>=(j|0))ba();v=z+56|0;t=z+16|0;s=z+8|0;p=z;A=z+32|0;u=z+48|0;w=z+40|0;x=z+24|0;y=Xp(72)|0;c[y>>2]=a;c[y+4>>2]=b;c[y+8>>2]=d;c[y+16>>2]=f;r=(e|0)==1;b=r?1:-1;c[y+20>>2]=b;c[y+12>>2]=b;c[y+24>>2]=2;c[y+28>>2]=10;Dl(a,v,A);e=c[A>>2]|0;if(e>>>0<2){A=c[2348]|0;c[p>>2]=a;Kp(A,40834,p)|0;c[s>>2]=a;Kp(A,40884,s)|0;kb(1)}else m=0;while(1){if((c[v+(m<<2)>>2]|0)!=2){e=5;break}m=m+1|0;if(m>>>0>=e>>>0){e=6;break}}if((e|0)==5)if(!m){m=c[v>>2]|0;if(!m){A=c[2348]|0;c[s>>2]=a;Kp(A,40884,s)|0;kb(1)}else h=m}else e=6;if((e|0)==6)if(a&15)if(!(a&7))h=8;else h=(a&3|0)==0?4:2;else h=16;if((a>>>0)%(h>>>0)|0|0){A=c[2348]|0;c[t>>2]=a;c[t+4>>2]=h;Kp(A,40941,t)|0;kb(1)}s=(a>>>0)/(h>>>0)|0;c[y+44>>2]=h;c[y+40>>2]=s;A=(h>>>0>s>>>0?h:s)<<3;t=Xp(A)|0;c[y+52>>2]=t;A=Xp(A)|0;c[y+56>>2]=A;d=a<<3;c[y+48>>2]=Xp(d)|0;c[y+64>>2]=Mk(s,t,A,b,f)|0;c[y+68>>2]=Mk(h,t,A,b,f)|0;d=Xp(d)|0;c[y+60>>2]=d;l=r?-1.0:1.0;if(!a){i=z;return y|0}n=l*0.0;k=n*2.0-n;o=l*2.0+n*0.0;m=u+4|0;q=+(a>>>0);e=x+4|0;b=w+4|0;if((k!=k|0.0!=0.0)&(o!=o|0.0!=0.0)){h=0;do{ao(u,n,l,2.0,0.0);k=+(h>>>0);o=k*(+g[m>>2]*3.141592653589793)/q;g[x>>2]=k*(+g[u>>2]*3.141592653589793)/q;g[e>>2]=o;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];Io(w,v);A=c[b>>2]|0;c[d+(h<<3)>>2]=c[w>>2];c[d+(h<<3)+4>>2]=A;h=h+1|0}while(h>>>0>>0);i=z;return y|0}l=k*3.141592653589793;k=o*3.141592653589793;h=0;do{o=+(h>>>0);g[x>>2]=o*l/q;g[e>>2]=o*k/q;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];Io(w,v);A=c[b>>2]|0;c[d+(h<<3)>>2]=c[w>>2];c[d+(h<<3)+4>>2]=A;h=h+1|0}while(h>>>0>>0);i=z;return y|0}function Qk(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;x=i;i=i+16|0;if((i|0)>=(j|0))ba();d=x;w=c[a+40>>2]|0;t=c[a+44>>2]|0;u=c[a+52>>2]|0;v=c[a+56>>2]|0;s=c[a+48>>2]|0;e=c[a+60>>2]|0;gq(s|0,c[a+4>>2]|0,c[a>>2]<<3|0)|0;r=(t|0)==0;a:do if(!r){q=a+64|0;f=d+4|0;if(!w){b=0;while(1){h=c[q>>2]|0;qb[c[h+28>>2]&31](h);b=b+1|0;if((b|0)==(t|0))break a}}else h=0;do{b=0;do{z=(_(b,t)|0)+h|0;y=c[s+(z<<3)+4>>2]|0;c[u+(b<<3)>>2]=c[s+(z<<3)>>2];c[u+(b<<3)+4>>2]=y;b=b+1|0}while((b|0)!=(w|0));b=c[q>>2]|0;qb[c[b+28>>2]&31](b);b=0;do{m=+g[v+(b<<3)>>2];n=+g[v+(b<<3)+4>>2];z=_(b,h)|0;o=+g[e+(z<<3)>>2];p=+g[e+(z<<3)+4>>2];l=m*o-n*p;k=n*o+m*p;if((l!=l|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(d,m,n,o,p);l=+g[d>>2];k=+g[f>>2]}z=(_(b,t)|0)+h|0;g[s+(z<<3)>>2]=l;g[s+(z<<3)+4>>2]=k;b=b+1|0}while((b|0)!=(w|0));h=h+1|0}while((h|0)!=(t|0))}while(0);if(!w){i=x;return}h=a+68|0;f=a+8|0;if(r){b=0;do{z=c[h>>2]|0;qb[c[z+28>>2]&31](z);b=b+1|0}while((b|0)!=(w|0));i=x;return}else e=0;do{b=_(e,t)|0;d=0;do{y=d+b|0;z=c[s+(y<<3)+4>>2]|0;c[u+(d<<3)>>2]=c[s+(y<<3)>>2];c[u+(d<<3)+4>>2]=z;d=d+1|0}while((d|0)!=(t|0));b=c[h>>2]|0;qb[c[b+28>>2]&31](b);b=0;do{r=c[v+(b<<3)+4>>2]|0;z=(_(b,w)|0)+e|0;y=c[f>>2]|0;c[y+(z<<3)>>2]=c[v+(b<<3)>>2];c[y+(z<<3)+4>>2]=r;b=b+1|0}while((b|0)!=(t|0));e=e+1|0}while((e|0)!=(w|0));i=x;return}function Rk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+48|0;if((i|0)>=(j|0))ba();A=F+40|0;x=F+32|0;B=F;C=F+24|0;D=F+16|0;E=Xp(72)|0;c[E>>2]=a;c[E+4>>2]=b;c[E+8>>2]=d;c[E+16>>2]=f;y=(e|0)==1?1:-1;c[E+20>>2]=y;l=E+12|0;c[l>>2]=y;c[E+24>>2]=3;c[E+28>>2]=11;y=(a<<3)+-8|0;e=Xp(y)|0;o=E+40|0;u=E+48|0;c[u>>2]=e;y=Xp(y)|0;c[E+52>>2]=y;k=a+-1|0;z=Mk(k,e,y,1,f)|0;c[E+56>>2]=z;c[E+60>>2]=Mk(k,y,e,-1,f)|0;e=El(a)|0;b=Xp((a<<2)+-4|0)|0;c[o>>2]=b;a:do if((a|0)!=1){d=0;do{w=d;d=d+1|0;c[b+(w<<2)>>2]=Fl(e,d,a)|0}while(d>>>0>>0);e=c[E>>2]|0;s=(c[l>>2]|0)==1?-1.0:1.0;if((e|0)!=1){t=s*0.0;m=t*2.0-t;n=s*2.0+t*0.0;d=x+4|0;l=c[o>>2]|0;a=B+8|0;v=+(e>>>0);o=D+4|0;w=C+4|0;k=c[u>>2]|0;f=e+-1|0;if((m!=m|0.0!=0.0)&(n!=n|0.0!=0.0)){b=0;while(1){ao(x,t,s,2.0,0.0);p=+g[x>>2]*3.141592653589793;q=+g[d>>2]*3.141592653589793;r=+((c[l+(b<<2)>>2]|0)>>>0);n=p*r-q*0.0;m=p*0.0+q*r;if((n!=n|0.0!=0.0)&(m!=m|0.0!=0.0)){$n(B,p,q,r,0.0);n=+h[B>>3];m=+h[a>>3]}g[D>>2]=n/v;g[o>>2]=m/v;c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];Io(C,A);u=c[w>>2]|0;c[k+(b<<3)>>2]=c[C>>2];c[k+(b<<3)+4>>2]=u;b=b+1|0;if(b>>>0>=f>>>0)break a}}t=m*3.141592653589793;q=n*3.141592653589793;r=q*0.0;s=t*0.0;b=0;do{p=+((c[l+(b<<2)>>2]|0)>>>0);n=t*p-r;m=s+q*p;if((n!=n|0.0!=0.0)&(m!=m|0.0!=0.0)){$n(B,t,q,p,0.0);n=+h[B>>3];m=+h[a>>3]}g[D>>2]=n/v;g[o>>2]=m/v;c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];Io(C,A);x=c[w>>2]|0;c[k+(b<<3)>>2]=c[C>>2];c[k+(b<<3)+4>>2]=x;b=b+1|0}while(b>>>0>>0)}else e=1}else e=1;while(0);qb[c[z+28>>2]&31](z);D=(e<<3)+-8|0;C=Xp(D)|0;c[E+44>>2]=C;fq(C|0,y|0,D|0)|0;i=F;return E|0}function Sk(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();r=t;b=(c[a>>2]|0)+-1|0;s=a+40|0;if(b|0){e=a+4|0;f=a+48|0;d=0;do{u=c[(c[s>>2]|0)+(b+~d<<2)>>2]|0;v=c[e>>2]|0;l=c[v+(u<<3)+4>>2]|0;q=c[f>>2]|0;c[q+(d<<3)>>2]=c[v+(u<<3)>>2];c[q+(d<<3)+4>>2]=l;d=d+1|0;b=(c[a>>2]|0)+-1|0}while(b>>>0>d>>>0)}v=c[a+56>>2]|0;qb[c[v+28>>2]&31](v);if((c[a>>2]|0)!=1){b=a+44|0;d=a+52|0;e=r+4|0;q=0;do{l=c[b>>2]|0;m=+g[l+(q<<3)>>2];n=+g[l+(q<<3)+4>>2];l=c[d>>2]|0;f=l+(q<<3)|0;o=+g[f>>2];l=l+(q<<3)+4|0;p=+g[l>>2];k=m*o-n*p;h=n*o+m*p;if((k!=k|0.0!=0.0)&(h!=h|0.0!=0.0)){ao(r,o,p,m,n);k=+g[r>>2];h=+g[e>>2]}g[f>>2]=k;g[l>>2]=h;q=q+1|0}while(q>>>0<((c[a>>2]|0)+-1|0)>>>0)}l=c[a+60>>2]|0;qb[c[l+28>>2]&31](l);l=a+8|0;v=c[l>>2]|0;g[v>>2]=0.0;g[v+4>>2]=0.0;if(c[a>>2]|0){d=a+4|0;e=0;do{u=c[d>>2]|0;v=c[l>>2]|0;b=v+4|0;p=+g[u+(e<<3)+4>>2]+ +g[b>>2];g[v>>2]=+g[u+(e<<3)>>2]+ +g[v>>2];g[b>>2]=p;e=e+1|0;b=c[a>>2]|0}while(e>>>0>>0);b=b+-1|0;if(!b){i=t;return}}else b=-1;e=a+48|0;f=a+4|0;d=0;do{v=c[(c[s>>2]|0)+(d<<2)>>2]|0;q=c[e>>2]|0;o=+(b>>>0);r=c[f>>2]|0;p=+g[q+(d<<3)+4>>2]/o+ +g[r+4>>2];u=c[l>>2]|0;g[u+(v<<3)>>2]=+g[q+(d<<3)>>2]/o+ +g[r>>2];g[u+(v<<3)+4>>2]=p;d=d+1|0;b=(c[a>>2]|0)+-1|0}while(d>>>0>>0);i=t;return}function Tk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=i;i=i+48|0;if((i|0)>=(j|0))ba();B=G+40|0;z=G+32|0;C=G;D=G+24|0;E=G+16|0;F=Xp(72)|0;c[F>>2]=a;c[F+4>>2]=b;c[F+8>>2]=d;o=F+16|0;c[o>>2]=f;b=(e|0)==1?1:-1;c[F+20>>2]=b;n=F+12|0;c[n>>2]=b;c[F+24>>2]=4;c[F+28>>2]=12;b=El(a)|0;d=Xp((a<<2)+-4|0)|0;A=F+40|0;t=F+44|0;c[t>>2]=d;if((a|0)==1)b=-3;else{e=a+-1|0;f=0;do{y=f;f=f+1|0;c[d+(y<<2)>>2]=Fl(b,f,a)|0}while(f>>>0>>0);b=(a<<1)+-5|0}c[A>>2]=b;d=0;do{b=b>>>1;d=d+1|0}while((b|0)!=0);b=d;w=1<>2]=w;a=w<<3;x=Xp(a)|0;c[F+52>>2]=x;a=Xp(a)|0;y=F+56|0;c[y>>2]=a;d=c[o>>2]|0;v=F+60|0;c[v>>2]=Mk(w,x,a,1,d)|0;c[F+64>>2]=Mk(w,a,x,-1,d)|0;r=(c[n>>2]|0)==1?-1.0:1.0;s=r*0.0;k=s*2.0-s;l=r*2.0+s*0.0;d=z+4|0;a=c[F>>2]|0;o=a+-1|0;e=c[t>>2]|0;f=C+8|0;u=+(a>>>0);a=E+4|0;n=D+4|0;if((k!=k|0.0!=0.0)&(l!=l|0.0!=0.0)){b=0;do{ao(z,s,r,2.0,0.0);m=+g[z>>2]*3.141592653589793;p=+g[d>>2]*3.141592653589793;q=+((c[e+(((b>>>0)%(o>>>0)|0)<<2)>>2]|0)>>>0);l=m*q-p*0.0;k=m*0.0+p*q;if((l!=l|0.0!=0.0)&(k!=k|0.0!=0.0)){$n(C,m,p,q,0.0);l=+h[C>>3];k=+h[f>>3]}g[E>>2]=l/u;g[a>>2]=k/u;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];Io(D,B);t=c[n>>2]|0;c[x+(b<<3)>>2]=c[D>>2];c[x+(b<<3)+4>>2]=t;b=b+1|0}while(b>>>0>>0);E=c[v>>2]|0;C=E+28|0;C=c[C>>2]|0;qb[C&31](E);E=c[A>>2]|0;E=E<<3;C=Xp(E)|0;D=F+48|0;c[D>>2]=C;D=c[y>>2]|0;gq(C|0,D|0,E|0)|0;i=G;return F|0}s=k*3.141592653589793;p=l*3.141592653589793;q=p*0.0;r=s*0.0;b=0;do{l=+((c[e+(((b>>>0)%(o>>>0)|0)<<2)>>2]|0)>>>0);m=s*l-q;k=r+p*l;if((m!=m|0.0!=0.0)&(k!=k|0.0!=0.0)){$n(C,s,p,l,0.0);m=+h[C>>3];k=+h[f>>3]}g[E>>2]=m/u;g[a>>2]=k/u;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];Io(D,B);z=c[n>>2]|0;c[x+(b<<3)>>2]=c[D>>2];c[x+(b<<3)+4>>2]=z;b=b+1|0}while(b>>>0>>0);E=c[v>>2]|0;C=E+28|0;C=c[C>>2]|0;qb[C&31](E);E=c[A>>2]|0;E=E<<3;C=Xp(E)|0;D=F+48|0;c[D>>2]=C;D=c[y>>2]|0;gq(C|0,D|0,E|0)|0;i=G;return F|0}function Uk(a){a=a|0;var b=0,d=0.0,e=0,f=0,h=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;w=i;i=i+16|0;if((i|0)>=(j|0))ba();p=w;u=c[a+52>>2]|0;q=c[a+56>>2]|0;r=c[a+48>>2]|0;v=c[a+44>>2]|0;s=c[a+40>>2]|0;k=c[v+((c[a>>2]|0)+-2<<2)>>2]|0;t=a+4|0;f=c[t>>2]|0;b=c[f+(k<<3)+4>>2]|0;c[u>>2]=c[f+(k<<3)>>2];c[u+4>>2]=b;b=c[a>>2]|0;k=s+1|0;if((k|0)!=(b|0)){e=0;do{e=e+1|0;g[u+(e<<3)>>2]=0.0;g[u+(e<<3)+4>>2]=0.0;b=c[a>>2]|0}while(e>>>0<(k-b|0)>>>0)}e=b+-1|0;if(e>>>0>1){f=1;do{z=c[v+(e+~f<<2)>>2]|0;A=c[t>>2]|0;y=c[A+(z<<3)+4>>2]|0;x=k+f-b|0;c[u+(x<<3)>>2]=c[A+(z<<3)>>2];c[u+(x<<3)+4>>2]=y;f=f+1|0;b=c[a>>2]|0;e=b+-1|0}while(e>>>0>f>>>0)}A=c[a+60>>2]|0;qb[c[A+28>>2]&31](A);if(s|0){b=p+4|0;k=0;do{l=+g[r+(k<<3)>>2];m=+g[r+(k<<3)+4>>2];e=q+(k<<3)|0;n=+g[e>>2];f=q+(k<<3)+4|0;o=+g[f>>2];h=l*n-m*o;d=m*n+l*o;if((h!=h|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(p,n,o,l,m);h=+g[p>>2];d=+g[b>>2]}g[e>>2]=h;g[f>>2]=d;k=k+1|0}while((k|0)!=(s|0))}f=c[a+64>>2]|0;qb[c[f+28>>2]&31](f);f=a+8|0;A=c[f>>2]|0;g[A>>2]=0.0;g[A+4>>2]=0.0;if(c[a>>2]|0){e=0;do{z=c[t>>2]|0;A=c[f>>2]|0;b=A+4|0;o=+g[z+(e<<3)+4>>2]+ +g[b>>2];g[A>>2]=+g[z+(e<<3)>>2]+ +g[A>>2];g[b>>2]=o;e=e+1|0;b=c[a>>2]|0}while(e>>>0>>0);if((b|0)==1){i=w;return}}d=+(s>>>0);b=0;do{A=c[v+(b<<2)>>2]|0;y=c[t>>2]|0;o=+g[u+(b<<3)+4>>2]/d+ +g[y+4>>2];z=c[f>>2]|0;g[z+(A<<3)>>2]=+g[u+(b<<3)>>2]/d+ +g[y>>2];g[z+(A<<3)+4>>2]=o;b=b+1|0}while(b>>>0<((c[a>>2]|0)+-1|0)>>>0);i=w;return}function Vk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;B=i;i=i+32|0;if((i|0)>=(j|0))ba();w=B+24|0;x=B+16|0;y=B+8|0;z=B;A=Xp(72)|0;c[A>>2]=a;c[A+4>>2]=b;c[A+8>>2]=d;c[A+16>>2]=f;b=(e|0)==1;v=b?1:-1;c[A+20>>2]=v;c[A+12>>2]=v;c[A+24>>2]=5;v=A+40|0;c[v>>2]=0;f=A+44|0;c[f>>2]=0;switch(a|0){case 2:{c[A+28>>2]=13;i=B;return A|0}case 3:{c[A+28>>2]=14;i=B;return A|0}case 4:{c[A+28>>2]=15;i=B;return A|0}case 5:{c[A+28>>2]=16;i=B;return A|0}case 6:{c[A+28>>2]=17;i=B;return A|0}case 7:{c[A+28>>2]=18;i=B;return A|0}case 8:{c[A+28>>2]=19;i=B;return A|0}default:{e=A+28|0;if((a|0)==16){c[e>>2]=20;i=B;return A|0}c[e>>2]=21;t=Xp(a<<3)|0;c[v>>2]=t;u=Xp(a<<2)|0;c[f>>2]=u;k=b?-1.0:1.0;if(!a){i=B;return A|0}d=a>>>0>1;l=k*0.0;p=l*2.0-l;q=k*2.0+l*0.0;s=(p!=p|0.0!=0.0)&(q!=q|0.0!=0.0);m=x+4|0;n=z+4|0;o=y+4|0;p=p*3.141592653589793;q=q*3.141592653589793;r=0;do{if(d){e=c[A>>2]|0;h=+(e>>>0);b=c[v>>2]|0;if(s){f=1;do{ao(x,l,k,2.0,0.0);F=+((_(f,r)|0)>>>0);E=F*(+g[m>>2]*3.141592653589793)/h;g[z>>2]=F*(+g[x>>2]*3.141592653589793)/h;g[n>>2]=E;c[w>>2]=c[z>>2];c[w+4>>2]=c[z+4>>2];Io(y,w);D=c[o>>2]|0;C=f+-1|0;c[b+(C<<3)>>2]=c[y>>2];c[b+(C<<3)+4>>2]=D;f=f+1|0}while(f>>>0>>0)}else{f=1;do{F=+((_(f,r)|0)>>>0);g[z>>2]=F*p/h;g[n>>2]=F*q/h;c[w>>2]=c[z>>2];c[w+4>>2]=c[z+4>>2];Io(y,w);C=c[o>>2]|0;D=f+-1|0;c[b+(D<<3)>>2]=c[y>>2];c[b+(D<<3)+4>>2]=C;f=f+1|0}while(f>>>0>>0)}}else e=a;c[u+(r<<2)>>2]=Gl(t,e+-1|0)|0;r=r+1|0}while(r>>>0>>0);i=B;return A|0}}return 0}function Wk(a){a=a|0;var b=0.0,d=0,e=0,f=0;d=a+4|0;f=c[d>>2]|0;b=+g[f+4>>2]+ +g[f+12>>2];a=a+8|0;e=c[a>>2]|0;g[e>>2]=+g[f>>2]+ +g[f+8>>2];g[e+4>>2]=b;d=c[d>>2]|0;b=+g[d+4>>2]-+g[d+12>>2];a=c[a>>2]|0;g[a+8>>2]=+g[d>>2]-+g[d+8>>2];g[a+12>>2]=b;return}function Xk(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=i;i=i+80|0;if((i|0)>=(j|0))ba();v=C+64|0;e=C+56|0;p=C+48|0;o=C+40|0;r=C+32|0;x=C+24|0;w=C+16|0;y=C+8|0;A=C;z=a+4|0;D=c[z>>2]|0;s=+g[D+4>>2]+ +g[D+12>>2]+ +g[D+20>>2];B=a+8|0;d=c[B>>2]|0;g[d>>2]=+g[D>>2]+ +g[D+8>>2]+ +g[D+16>>2];g[d+4>>2]=s;d=c[z>>2]|0;s=+g[d>>2];t=+g[d+4>>2];b=+g[d+8>>2];f=+g[d+12>>2];h=f*.8660253882408142-b*.5;k=f*-.5-b*.8660253882408142;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(e,b,f,-.5,-.8660253882408142);h=+g[e>>2];q=+g[e+4>>2];d=c[z>>2]|0}else q=k;n=+g[d+16>>2];m=+g[d+20>>2];g[o>>2]=-.5;g[o+4>>2]=-.8660253882408142;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];Ko(p,v);l=+g[p>>2];k=+g[p+4>>2];f=n*l-m*k;b=m*l+n*k;if((f!=f|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(r,n,m,l,k);f=+g[r>>2];b=+g[r+4>>2]}u=s+h+f;s=t+q+b;D=c[z>>2]|0;n=+g[D>>2];q=+g[D+4>>2];l=+g[D+8>>2];m=+g[D+12>>2];g[w>>2]=-.5;g[w+4>>2]=-.8660253882408142;c[v>>2]=c[w>>2];c[v+4>>2]=c[w+4>>2];Ko(x,v);h=+g[x>>2];b=+g[x+4>>2];k=l*h-m*b;f=m*h+l*b;if((k!=k|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(y,l,m,h,b);m=+g[y+4>>2];l=+g[y>>2]}else{m=f;l=k}D=c[z>>2]|0;h=+g[D+16>>2];k=+g[D+20>>2];f=k*.8660253882408142-h*.5;b=k*-.5-h*.8660253882408142;if((f!=f|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(A,h,k,-.5,-.8660253882408142);f=+g[A>>2];b=+g[A+4>>2]}f=n+l+f;b=q+m+b;e=c[B>>2]|0;d=e+8|0;e=e+12|0;if((c[a+12>>2]|0)==1){g[d>>2]=u;g[e>>2]=s;D=c[B>>2]|0;g[D+16>>2]=f;g[D+20>>2]=b;i=C;return}else{g[d>>2]=f;g[e>>2]=b;D=c[B>>2]|0;g[D+16>>2]=u;g[D+20>>2]=s;i=C;return}}function Yk(a){a=a|0;var b=0,d=0.0,e=0.0,f=0,h=0.0,i=0.0,j=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0;l=c[a+4>>2]|0;p=c[a+8>>2]|0;z=c[l>>2]|0;y=c[l+4>>2]|0;m=p+4|0;c[p>>2]=z;c[m>>2]=y;B=c[l+16>>2]|0;A=c[l+20>>2]|0;f=p+8|0;b=p+12|0;c[f>>2]=B;c[b>>2]=A;x=c[l+8>>2]|0;w=c[l+12>>2]|0;t=p+16|0;s=p+20|0;c[t>>2]=x;c[s>>2]=w;v=+g[l+24>>2];u=+g[l+28>>2];l=p+24|0;j=p+28|0;o=(c[k>>2]=B,+g[k>>2]);r=(c[k>>2]=A,+g[k>>2]);q=(c[k>>2]=z,+g[k>>2]);n=(c[k>>2]=y,+g[k>>2]);i=q-o;e=n-r;g[f>>2]=i;g[b>>2]=e;q=o+q;n=r+n;r=(c[k>>2]=x,+g[k>>2]);o=(c[k>>2]=w,+g[k>>2]);d=r-v;h=o-u;g[l>>2]=d;g[j>>2]=h;r=v+r;o=u+o;g[t>>2]=q-r;g[s>>2]=n-o;g[p>>2]=r+q;g[m>>2]=o+n;h=h-d*0.0;a=(c[a+12>>2]|0)==-1;h=a?-h:h;d=a?d:-d;g[l>>2]=i-h;g[j>>2]=e-d;g[f>>2]=i+h;g[b>>2]=e+d;return}function Zk(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0,O=0.0,P=0,Q=0,R=0.0,S=0,T=0.0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0.0,$=0,aa=0,ca=0,da=0.0,ea=0.0,fa=0,ga=0,ha=0,ia=0;ia=i;i=i+208|0;if((i|0)>=(j|0))ba();v=ia+192|0;p=ia+184|0;q=ia+176|0;s=ia+168|0;r=ia+160|0;u=ia+152|0;t=ia+144|0;x=ia+136|0;w=ia+128|0;y=ia+120|0;B=ia+112|0;C=ia+104|0;D=ia+96|0;E=ia+88|0;F=ia+80|0;G=ia+72|0;H=ia+64|0;I=ia+56|0;J=ia+48|0;K=ia+40|0;L=ia+32|0;U=ia+24|0;X=ia+16|0;aa=ia+8|0;ga=ia;N=c[a+4>>2]|0;ha=c[a+8>>2]|0;P=N+4|0;Q=N+8|0;S=N+12|0;V=N+16|0;W=N+20|0;Z=N+24|0;$=N+28|0;ca=N+32|0;fa=N+36|0;ea=+g[P>>2]+ +g[S>>2]+ +g[W>>2]+ +g[$>>2]+ +g[fa>>2];g[ha>>2]=+g[N>>2]+ +g[Q>>2]+ +g[V>>2]+ +g[Z>>2]+ +g[ca>>2];g[ha+4>>2]=ea;if((c[a+12>>2]|0)==-1){g[q>>2]=.30901700258255005;g[q+4>>2]=-.9510565400123596;c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];Ko(p,v);da=+g[p>>2];ea=+g[p+4>>2];g[r>>2]=-.80901700258255;g[r+4>>2]=-.5877852439880371;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];Ko(s,v);_=+g[s>>2];Y=+g[s+4>>2]}else{da=.30901700258255005;ea=-.9510565400123596;_=-.80901700258255;Y=-.5877852439880371}g[t>>2]=da;g[t+4>>2]=ea;c[v>>2]=c[t>>2];c[v+4>>2]=c[t+4>>2];Ko(u,v);O=+g[u>>2];M=+g[u+4>>2];g[w>>2]=_;g[w+4>>2]=Y;c[v>>2]=c[w>>2];c[v+4>>2]=c[w+4>>2];Ko(x,v);T=+g[x>>2];R=+g[x+4>>2];z=+g[N>>2];A=+g[P>>2];b=+g[Q>>2];d=+g[S>>2];e=da*b-ea*d;f=ea*b+da*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(y,b,d,da,ea);e=+g[y>>2];f=+g[y+4>>2]}d=+g[V>>2];h=+g[W>>2];b=_*d-Y*h;k=Y*d+_*h;if((b!=b|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(B,d,h,_,Y);o=+g[B>>2];k=+g[B+4>>2]}else o=b;b=+g[Z>>2];d=+g[$>>2];h=T*b-R*d;l=R*b+T*d;if((h!=h|0.0!=0.0)&(l!=l|0.0!=0.0)){ao(C,b,d,T,R);h=+g[C>>2];l=+g[C+4>>2]}m=+g[ca>>2];n=+g[fa>>2];d=O*m-M*n;b=M*m+O*n;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(D,m,n,O,M);d=+g[D>>2];b=+g[D+4>>2]}g[ha+8>>2]=z+e+o+h+d;g[ha+12>>2]=A+f+k+l+b;z=+g[N>>2];A=+g[P>>2];b=+g[Q>>2];d=+g[S>>2];e=_*b-Y*d;f=Y*b+_*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(E,b,d,_,Y);e=+g[E>>2];f=+g[E+4>>2]}b=+g[V>>2];d=+g[W>>2];h=O*b-M*d;k=M*b+O*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(F,b,d,O,M);h=+g[F>>2];k=+g[F+4>>2]}b=+g[Z>>2];d=+g[$>>2];l=da*b-ea*d;m=ea*b+da*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(G,b,d,da,ea);l=+g[G>>2];m=+g[G+4>>2]}n=+g[ca>>2];o=+g[fa>>2];d=T*n-R*o;b=R*n+T*o;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(H,n,o,T,R);d=+g[H>>2];b=+g[H+4>>2]}g[ha+16>>2]=z+e+h+l+d;g[ha+20>>2]=A+f+k+m+b;z=+g[N>>2];A=+g[P>>2];b=+g[Q>>2];d=+g[S>>2];e=T*b-R*d;f=R*b+T*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(I,b,d,T,R);e=+g[I>>2];f=+g[I+4>>2]}b=+g[V>>2];d=+g[W>>2];h=da*b-ea*d;k=ea*b+da*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(J,b,d,da,ea);h=+g[J>>2];k=+g[J+4>>2]}b=+g[Z>>2];d=+g[$>>2];l=O*b-M*d;m=M*b+O*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(K,b,d,O,M);l=+g[K>>2];m=+g[K+4>>2]}n=+g[ca>>2];o=+g[fa>>2];d=_*n-Y*o;b=Y*n+_*o;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(L,n,o,_,Y);d=+g[L>>2];b=+g[L+4>>2]}g[ha+24>>2]=z+e+h+l+d;g[ha+28>>2]=A+f+k+m+b;n=+g[N>>2];o=+g[P>>2];e=+g[Q>>2];b=+g[S>>2];d=O*e-M*b;f=M*e+O*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(U,e,b,O,M);m=+g[U>>2];l=+g[U+4>>2]}else{m=d;l=f}e=+g[V>>2];b=+g[W>>2];d=T*e-R*b;f=R*e+T*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(X,e,b,T,R);k=+g[X>>2];h=+g[X+4>>2]}else{k=d;h=f}f=+g[Z>>2];e=+g[$>>2];d=_*f-Y*e;b=Y*f+_*e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(aa,f,e,_,Y);d=+g[aa>>2];b=+g[aa+4>>2]}k=n+m+k+d;h=o+l+h+b;f=+g[ca>>2];b=+g[fa>>2];d=da*f-ea*b;e=ea*f+da*b;if(!((d!=d|0.0!=0.0)&(e!=e|0.0!=0.0))){da=d;ea=e;da=k+da;ea=h+ea;ga=ha+32|0;ha=ha+36|0;g[ga>>2]=da;g[ha>>2]=ea;i=ia;return}ao(ga,f,b,da,ea);da=+g[ga>>2];ea=+g[ga+4>>2];da=k+da;ea=h+ea;ga=ha+32|0;ha=ha+36|0;g[ga>>2]=da;g[ha>>2]=ea;i=ia;return}function _k(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0.0,aa=0.0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=i;i=i+208|0;if((i|0)>=(j|0))ba();n=ha+192|0;o=ha+184|0;p=ha+176|0;w=ha+168|0;q=ha+160|0;r=ha+152|0;s=ha+144|0;v=ha+136|0;t=ha+128|0;x=ha+120|0;y=ha+112|0;z=ha+104|0;A=ha+96|0;B=ha+88|0;C=ha+80|0;D=ha+72|0;E=ha+64|0;F=ha+56|0;G=ha+48|0;H=ha+40|0;K=ha+32|0;R=ha+24|0;W=ha+16|0;ca=ha+8|0;fa=ha;L=c[a+4>>2]|0;ga=c[a+8>>2]|0;M=L+4|0;N=L+8|0;O=L+12|0;S=L+16|0;T=L+20|0;X=L+24|0;Y=L+28|0;Z=L+32|0;_=L+36|0;da=L+40|0;ea=L+44|0;aa=+g[M>>2]+ +g[O>>2]+ +g[T>>2]+ +g[Y>>2]+ +g[_>>2]+ +g[ea>>2];g[ga>>2]=+g[L>>2]+ +g[N>>2]+ +g[S>>2]+ +g[X>>2]+ +g[Z>>2]+ +g[da>>2];g[ga+4>>2]=aa;if((c[a+12>>2]|0)==1){g[p>>2]=.5;g[p+4>>2]=-.8660253882408142;c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];Ko(o,n);U=-+g[o>>2];V=-+g[o+4>>2];g[q>>2]=.5;g[q+4>>2]=-.8660253882408142;c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];Ko(w,n);$=.5;aa=-.8660253882408142;Q=-.5;P=.8660253882408142;J=+g[w>>2];I=+g[w+4>>2]}else{g[s>>2]=.5;g[s+4>>2]=-.8660253882408142;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];Ko(r,n);$=+g[r>>2];aa=+g[r+4>>2];g[t>>2]=.5;g[t+4>>2]=-.8660253882408142;c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];Ko(v,n);U=-.5;V=.8660253882408142;Q=-+g[v>>2];P=-+g[v+4>>2];J=.5;I=-.8660253882408142}l=+g[L>>2];u=+g[M>>2];b=+g[N>>2];d=+g[O>>2];e=$*b-aa*d;f=aa*b+$*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(x,b,d,$,aa);e=+g[x>>2];k=+g[x+4>>2]}else k=f;f=+g[S>>2];h=+g[T>>2];d=U*f-V*h;b=V*f+U*h;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(y,f,h,U,V);d=+g[y>>2];b=+g[y+4>>2]}m=l+e+d-+g[X>>2];l=u+k+b-+g[Y>>2];b=+g[Z>>2];d=+g[_>>2];e=Q*b-P*d;f=P*b+Q*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(z,b,d,Q,P);e=+g[z>>2];f=+g[z+4>>2]}h=+g[da>>2];k=+g[ea>>2];d=J*h-I*k;b=I*h+J*k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(A,h,k,J,I);d=+g[A>>2];b=+g[A+4>>2]}g[ga+8>>2]=m+e+d;g[ga+12>>2]=l+f+b;l=+g[L>>2];m=+g[M>>2];b=+g[N>>2];d=+g[O>>2];e=U*b-V*d;f=V*b+U*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(B,b,d,U,V);e=+g[B>>2];f=+g[B+4>>2]}h=+g[S>>2];k=+g[T>>2];d=Q*h-P*k;b=P*h+Q*k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(C,h,k,Q,P);d=+g[C>>2];b=+g[C+4>>2]}u=l+e+d+ +g[X>>2];l=m+f+b+ +g[Y>>2];b=+g[Z>>2];d=+g[_>>2];e=U*b-V*d;f=V*b+U*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(D,b,d,U,V);e=+g[D>>2];f=+g[D+4>>2]}h=+g[da>>2];k=+g[ea>>2];d=Q*h-P*k;b=P*h+Q*k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(E,h,k,Q,P);d=+g[E>>2];b=+g[E+4>>2]}g[ga+16>>2]=u+e+d;g[ga+20>>2]=l+f+b;l=+g[M>>2]-+g[O>>2]+ +g[T>>2]-+g[Y>>2]+ +g[_>>2]-+g[ea>>2];g[ga+24>>2]=+g[L>>2]-+g[N>>2]+ +g[S>>2]-+g[X>>2]+ +g[Z>>2]-+g[da>>2];g[ga+28>>2]=l;l=+g[L>>2];m=+g[M>>2];b=+g[N>>2];d=+g[O>>2];e=Q*b-P*d;f=P*b+Q*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(F,b,d,Q,P);e=+g[F>>2];f=+g[F+4>>2]}h=+g[S>>2];k=+g[T>>2];d=U*h-V*k;b=V*h+U*k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(G,h,k,U,V);d=+g[G>>2];b=+g[G+4>>2]}u=l+e+d+ +g[X>>2];l=m+f+b+ +g[Y>>2];b=+g[Z>>2];d=+g[_>>2];e=Q*b-P*d;f=P*b+Q*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(H,b,d,Q,P);e=+g[H>>2];f=+g[H+4>>2]}h=+g[da>>2];k=+g[ea>>2];d=U*h-V*k;b=V*h+U*k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(K,h,k,U,V);d=+g[K>>2];b=+g[K+4>>2]}g[ga+32>>2]=u+e+d;g[ga+36>>2]=l+f+b;l=+g[L>>2];m=+g[M>>2];e=+g[N>>2];b=+g[O>>2];d=J*e-I*b;f=I*e+J*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(R,e,b,J,I);k=+g[R>>2];h=+g[R+4>>2]}else{k=d;h=f}f=+g[S>>2];e=+g[T>>2];d=Q*f-P*e;b=P*f+Q*e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(W,f,e,Q,P);d=+g[W>>2];b=+g[W+4>>2]}k=l+k+d-+g[X>>2];h=m+h+b-+g[Y>>2];f=+g[Z>>2];e=+g[_>>2];d=U*f-V*e;b=V*f+U*e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(ca,f,e,U,V);d=+g[ca>>2];b=+g[ca+4>>2]}k=k+d;h=h+b;f=+g[da>>2];b=+g[ea>>2];d=$*f-aa*b;e=aa*f+$*b;if(!((d!=d|0.0!=0.0)&(e!=e|0.0!=0.0))){$=d;aa=e;$=k+$;aa=h+aa;fa=ga+40|0;ga=ga+44|0;g[fa>>2]=$;g[ga>>2]=aa;i=ha;return}ao(fa,f,b,$,aa);$=+g[fa>>2];aa=+g[fa+4>>2];$=k+$;aa=h+aa;fa=ga+40|0;ga=ga+44|0;g[fa>>2]=$;g[ga>>2]=aa;i=ha;return}function $k(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0.0,ka=0.0,la=0,ma=0,na=0,oa=0.0,pa=0,qa=0.0,ra=0,sa=0,ta=0,ua=0,va=0.0,wa=0,xa=0.0,ya=0,za=0,Aa=0,Ba=0.0,Ca=0.0,Da=0,Ea=0,Fa=0,Ga=0.0,Ha=0.0,Ia=0,Ja=0,Ka=0,La=0,Ma=0.0,Na=0.0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0;Sa=i;i=i+400|0;if((i|0)>=(j|0))ba();D=Sa+384|0;t=Sa+376|0;u=Sa+368|0;v=Sa+360|0;w=Sa+352|0;y=Sa+344|0;x=Sa+336|0;A=Sa+328|0;z=Sa+320|0;C=Sa+312|0;B=Sa+304|0;F=Sa+296|0;E=Sa+288|0;I=Sa+280|0;J=Sa+272|0;K=Sa+264|0;L=Sa+256|0;M=Sa+248|0;N=Sa+240|0;O=Sa+232|0;P=Sa+224|0;Q=Sa+216|0;R=Sa+208|0;S=Sa+200|0;T=Sa+192|0;U=Sa+184|0;V=Sa+176|0;W=Sa+168|0;X=Sa+160|0;Y=Sa+152|0;Z=Sa+144|0;_=Sa+136|0;$=Sa+128|0;aa=Sa+120|0;ca=Sa+112|0;da=Sa+104|0;ea=Sa+96|0;fa=Sa+88|0;ga=Sa+80|0;ha=Sa+72|0;ia=Sa+64|0;la=Sa+56|0;ma=Sa+48|0;ta=Sa+40|0;ya=Sa+32|0;Da=Sa+24|0;Ia=Sa+16|0;La=Sa+8|0;Qa=Sa;na=c[a+4>>2]|0;Ra=c[a+8>>2]|0;pa=na+4|0;ra=na+8|0;sa=na+12|0;ua=na+16|0;wa=na+20|0;za=na+24|0;Aa=na+28|0;Ea=na+32|0;Fa=na+36|0;Ja=na+40|0;Ka=na+44|0;Oa=na+48|0;Pa=na+52|0;Na=+g[pa>>2]+ +g[sa>>2]+ +g[wa>>2]+ +g[Aa>>2]+ +g[Fa>>2]+ +g[Ka>>2]+ +g[Pa>>2];g[Ra>>2]=+g[na>>2]+ +g[ra>>2]+ +g[ua>>2]+ +g[za>>2]+ +g[Ea>>2]+ +g[Ja>>2]+ +g[Oa>>2];g[Ra+4>>2]=Na;if((c[a+12>>2]|0)==1){Ma=.6234897971153259;Na=-.7818315029144287;Ga=-.22252093255519867;Ha=-.9749279022216797;Ca=-.9009688496589661;Ba=-.4338837265968323}else{g[u>>2]=.6234897971153259;g[u+4>>2]=-.7818315029144287;c[D>>2]=c[u>>2];c[D+4>>2]=c[u+4>>2];Ko(t,D);Ma=+g[t>>2];Na=+g[t+4>>2];g[w>>2]=-.22252093255519867;g[w+4>>2]=-.9749279022216797;c[D>>2]=c[w>>2];c[D+4>>2]=c[w+4>>2];Ko(v,D);Ga=+g[v>>2];Ha=+g[v+4>>2];g[x>>2]=-.9009688496589661;g[x+4>>2]=-.4338837265968323;c[D>>2]=c[x>>2];c[D+4>>2]=c[x+4>>2];Ko(y,D);Ca=+g[y>>2];Ba=+g[y+4>>2]}g[z>>2]=Ca;g[z+4>>2]=Ba;c[D>>2]=c[z>>2];c[D+4>>2]=c[z+4>>2];Ko(A,D);xa=+g[A>>2];va=+g[A+4>>2];g[B>>2]=Ga;g[B+4>>2]=Ha;c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];Ko(C,D);qa=+g[C>>2];oa=+g[C+4>>2];g[E>>2]=Ma;g[E+4>>2]=Na;c[D>>2]=c[E>>2];c[D+4>>2]=c[E+4>>2];Ko(F,D);ka=+g[F>>2];ja=+g[F+4>>2];G=+g[na>>2];H=+g[pa>>2];b=+g[ra>>2];d=+g[sa>>2];e=Ma*b-Na*d;f=Na*b+Ma*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(I,b,d,Ma,Na);e=+g[I>>2];f=+g[I+4>>2]}b=+g[ua>>2];d=+g[wa>>2];h=Ga*b-Ha*d;k=Ha*b+Ga*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(J,b,d,Ga,Ha);h=+g[J>>2];k=+g[J+4>>2]}b=+g[za>>2];d=+g[Aa>>2];l=Ca*b-Ba*d;m=Ba*b+Ca*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(K,b,d,Ca,Ba);l=+g[K>>2];m=+g[K+4>>2]}b=+g[Ea>>2];d=+g[Fa>>2];n=xa*b-va*d;o=va*b+xa*d;if((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0)){ao(L,b,d,xa,va);n=+g[L>>2];o=+g[L+4>>2]}b=+g[Ja>>2];d=+g[Ka>>2];p=qa*b-oa*d;q=oa*b+qa*d;if((p!=p|0.0!=0.0)&(q!=q|0.0!=0.0)){ao(M,b,d,qa,oa);p=+g[M>>2];q=+g[M+4>>2]}r=+g[Oa>>2];s=+g[Pa>>2];d=ka*r-ja*s;b=ja*r+ka*s;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(N,r,s,ka,ja);d=+g[N>>2];b=+g[N+4>>2]}g[Ra+8>>2]=G+e+h+l+n+p+d;g[Ra+12>>2]=H+f+k+m+o+q+b;G=+g[na>>2];H=+g[pa>>2];b=+g[ra>>2];d=+g[sa>>2];e=Ga*b-Ha*d;f=Ha*b+Ga*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(O,b,d,Ga,Ha);e=+g[O>>2];f=+g[O+4>>2]}b=+g[ua>>2];d=+g[wa>>2];h=xa*b-va*d;k=va*b+xa*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(P,b,d,xa,va);h=+g[P>>2];k=+g[P+4>>2]}b=+g[za>>2];d=+g[Aa>>2];l=ka*b-ja*d;m=ja*b+ka*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(Q,b,d,ka,ja);l=+g[Q>>2];m=+g[Q+4>>2]}b=+g[Ea>>2];d=+g[Fa>>2];n=Ma*b-Na*d;o=Na*b+Ma*d;if((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0)){ao(R,b,d,Ma,Na);n=+g[R>>2];o=+g[R+4>>2]}b=+g[Ja>>2];d=+g[Ka>>2];p=Ca*b-Ba*d;q=Ba*b+Ca*d;if((p!=p|0.0!=0.0)&(q!=q|0.0!=0.0)){ao(S,b,d,Ca,Ba);p=+g[S>>2];q=+g[S+4>>2]}r=+g[Oa>>2];s=+g[Pa>>2];d=qa*r-oa*s;b=oa*r+qa*s;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(T,r,s,qa,oa);d=+g[T>>2];b=+g[T+4>>2]}g[Ra+16>>2]=G+e+h+l+n+p+d;g[Ra+20>>2]=H+f+k+m+o+q+b;G=+g[na>>2];H=+g[pa>>2];b=+g[ra>>2];d=+g[sa>>2];e=Ca*b-Ba*d;f=Ba*b+Ca*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(U,b,d,Ca,Ba);e=+g[U>>2];f=+g[U+4>>2]}b=+g[ua>>2];d=+g[wa>>2];h=ka*b-ja*d;k=ja*b+ka*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(V,b,d,ka,ja);h=+g[V>>2];k=+g[V+4>>2]}b=+g[za>>2];d=+g[Aa>>2];l=Ga*b-Ha*d;m=Ha*b+Ga*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(W,b,d,Ga,Ha);l=+g[W>>2];m=+g[W+4>>2]}b=+g[Ea>>2];d=+g[Fa>>2];n=qa*b-oa*d;o=oa*b+qa*d;if((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0)){ao(X,b,d,qa,oa);n=+g[X>>2];o=+g[X+4>>2]}b=+g[Ja>>2];d=+g[Ka>>2];p=Ma*b-Na*d;q=Na*b+Ma*d;if((p!=p|0.0!=0.0)&(q!=q|0.0!=0.0)){ao(Y,b,d,Ma,Na);p=+g[Y>>2];q=+g[Y+4>>2]}r=+g[Oa>>2];s=+g[Pa>>2];d=xa*r-va*s;b=va*r+xa*s;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(Z,r,s,xa,va);d=+g[Z>>2];b=+g[Z+4>>2]}g[Ra+24>>2]=G+e+h+l+n+p+d;g[Ra+28>>2]=H+f+k+m+o+q+b;G=+g[na>>2];H=+g[pa>>2];b=+g[ra>>2];d=+g[sa>>2];e=xa*b-va*d;f=va*b+xa*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(_,b,d,xa,va);e=+g[_>>2];f=+g[_+4>>2]}b=+g[ua>>2];d=+g[wa>>2];h=Ma*b-Na*d;k=Na*b+Ma*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao($,b,d,Ma,Na);h=+g[$>>2];k=+g[$+4>>2]}b=+g[za>>2];d=+g[Aa>>2];l=qa*b-oa*d;m=oa*b+qa*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(aa,b,d,qa,oa);l=+g[aa>>2];m=+g[aa+4>>2]}b=+g[Ea>>2];d=+g[Fa>>2];n=Ga*b-Ha*d;o=Ha*b+Ga*d;if((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0)){ao(ca,b,d,Ga,Ha);n=+g[ca>>2];o=+g[ca+4>>2]}b=+g[Ja>>2];d=+g[Ka>>2];p=ka*b-ja*d;q=ja*b+ka*d;if((p!=p|0.0!=0.0)&(q!=q|0.0!=0.0)){ao(da,b,d,ka,ja);p=+g[da>>2];q=+g[da+4>>2]}r=+g[Oa>>2];s=+g[Pa>>2];d=Ca*r-Ba*s;b=Ba*r+Ca*s;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(ea,r,s,Ca,Ba);d=+g[ea>>2];b=+g[ea+4>>2]}g[Ra+32>>2]=G+e+h+l+n+p+d;g[Ra+36>>2]=H+f+k+m+o+q+b;G=+g[na>>2];H=+g[pa>>2];b=+g[ra>>2];d=+g[sa>>2];e=qa*b-oa*d;f=oa*b+qa*d;if((e!=e|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(fa,b,d,qa,oa);e=+g[fa>>2];f=+g[fa+4>>2]}b=+g[ua>>2];d=+g[wa>>2];h=Ca*b-Ba*d;k=Ba*b+Ca*d;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(ga,b,d,Ca,Ba);h=+g[ga>>2];k=+g[ga+4>>2]}b=+g[za>>2];d=+g[Aa>>2];l=Ma*b-Na*d;m=Na*b+Ma*d;if((l!=l|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(ha,b,d,Ma,Na);l=+g[ha>>2];m=+g[ha+4>>2]}b=+g[Ea>>2];d=+g[Fa>>2];n=ka*b-ja*d;o=ja*b+ka*d;if((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0)){ao(ia,b,d,ka,ja);n=+g[ia>>2];o=+g[ia+4>>2]}b=+g[Ja>>2];d=+g[Ka>>2];p=xa*b-va*d;q=va*b+xa*d;if((p!=p|0.0!=0.0)&(q!=q|0.0!=0.0)){ao(la,b,d,xa,va);p=+g[la>>2];q=+g[la+4>>2]}r=+g[Oa>>2];s=+g[Pa>>2];d=Ga*r-Ha*s;b=Ha*r+Ga*s;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(ma,r,s,Ga,Ha);d=+g[ma>>2];b=+g[ma+4>>2]}g[Ra+40>>2]=G+e+h+l+n+p+d;g[Ra+44>>2]=H+f+k+m+o+q+b;r=+g[na>>2];s=+g[pa>>2];e=+g[ra>>2];b=+g[sa>>2];d=ka*e-ja*b;f=ja*e+ka*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(ta,e,b,ka,ja);q=+g[ta>>2];p=+g[ta+4>>2]}else{q=d;p=f}e=+g[ua>>2];b=+g[wa>>2];d=qa*e-oa*b;f=oa*e+qa*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(ya,e,b,qa,oa);o=+g[ya>>2];n=+g[ya+4>>2]}else{o=d;n=f}e=+g[za>>2];b=+g[Aa>>2];d=xa*e-va*b;f=va*e+xa*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(Da,e,b,xa,va);m=+g[Da>>2];l=+g[Da+4>>2]}else{m=d;l=f}e=+g[Ea>>2];b=+g[Fa>>2];d=Ca*e-Ba*b;f=Ba*e+Ca*b;if((d!=d|0.0!=0.0)&(f!=f|0.0!=0.0)){ao(Ia,e,b,Ca,Ba);k=+g[Ia>>2];h=+g[Ia+4>>2]}else{k=d;h=f}f=+g[Ja>>2];e=+g[Ka>>2];d=Ga*f-Ha*e;b=Ha*f+Ga*e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(La,f,e,Ga,Ha);d=+g[La>>2];b=+g[La+4>>2]}k=r+q+o+m+k+d;h=s+p+n+l+h+b;f=+g[Oa>>2];b=+g[Pa>>2];d=Ma*f-Na*b;e=Na*f+Ma*b;if(!((d!=d|0.0!=0.0)&(e!=e|0.0!=0.0))){Ma=d;Na=e;Ma=k+Ma;Na=h+Na;Qa=Ra+48|0;Ra=Ra+52|0;g[Qa>>2]=Ma;g[Ra>>2]=Na;i=Sa;return}ao(Qa,f,b,Ma,Na);Ma=+g[Qa>>2];Na=+g[Qa+4>>2];Ma=k+Ma;Na=h+Na;Qa=Ra+48|0;Ra=Ra+52|0;g[Qa>>2]=Ma;g[Ra>>2]=Na;i=Sa;return}function al(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0;C=i;i=i+64|0;if((i|0)>=(j|0))ba();l=C+48|0;m=C+32|0;w=C+16|0;x=C;A=c[a+4>>2]|0;E=c[a+8>>2]|0;v=(c[a+12>>2]|0)==1;ea=c[A>>2]|0;da=c[A+4>>2]|0;D=E+4|0;c[E>>2]=ea;c[D>>2]=da;ga=c[A+32>>2]|0;fa=c[A+36>>2]|0;a=E+8|0;o=E+12|0;c[a>>2]=ga;c[o>>2]=fa;$=c[A+16>>2]|0;_=c[A+20>>2]|0;p=E+16|0;q=E+20|0;c[p>>2]=$;c[q>>2]=_;ca=c[A+48>>2]|0;aa=c[A+52>>2]|0;y=E+24|0;z=E+28|0;c[y>>2]=ca;c[z>>2]=aa;X=c[A+8>>2]|0;W=c[A+12>>2]|0;H=E+32|0;G=E+36|0;c[H>>2]=X;c[G>>2]=W;Z=c[A+40>>2]|0;Y=c[A+44>>2]|0;r=E+40|0;s=E+44|0;c[r>>2]=Z;c[s>>2]=Y;V=c[A+24>>2]|0;U=c[A+28>>2]|0;t=E+48|0;u=E+52|0;c[t>>2]=V;c[u>>2]=U;T=+g[A+56>>2];S=+g[A+60>>2];A=E+56|0;B=E+60|0;O=(c[k>>2]=ga,+g[k>>2]);P=(c[k>>2]=fa,+g[k>>2]);d=(c[k>>2]=ea,+g[k>>2]);b=(c[k>>2]=da,+g[k>>2]);N=d-O;K=b-P;d=O+d;b=P+b;P=(c[k>>2]=ca,+g[k>>2]);O=(c[k>>2]=aa,+g[k>>2]);R=(c[k>>2]=$,+g[k>>2]);Q=(c[k>>2]=_,+g[k>>2]);L=R-P;M=Q-O;R=P+R;Q=O+Q;O=(c[k>>2]=Z,+g[k>>2]);P=(c[k>>2]=Y,+g[k>>2]);F=(c[k>>2]=X,+g[k>>2]);e=(c[k>>2]=W,+g[k>>2]);J=F-O;n=e-P;F=O+F;e=P+e;P=(c[k>>2]=V,+g[k>>2]);O=(c[k>>2]=U,+g[k>>2]);I=P-T;f=O-S;P=T+P;O=S+O;g[p>>2]=d-R;g[q>>2]=b-Q;d=R+d;b=Q+b;g[t>>2]=F-P;g[u>>2]=e-O;F=P+F;e=O+e;O=L*0.0;M=v?M-O:O-M;L=v?-L:L;g[y>>2]=N-M;g[z>>2]=K-L;g[a>>2]=N+M;g[o>>2]=L+K;K=I*0.0;f=v?f-K:K-f;I=v?-I:I;g[A>>2]=J-f;g[B>>2]=n-I;f=J+f;n=I+n;g[r>>2]=f;g[s>>2]=n;g[H>>2]=d-F;g[G>>2]=b-e;g[E>>2]=F+d;g[D>>2]=e+b;b=f*.7071067811865476;e=n*.7071067811865476;if(v){d=b+e;b=e-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(l,f,n,.7071067811865476,-.7071067811865476);d=+h[l>>3];b=+h[l+8>>3]}}else{d=b-e;b=b+e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(m,f,n,.7071067811865476,.7071067811865476);d=+h[m>>3];b=+h[m+8>>3]}}f=b;e=d;T=+g[a>>2];b=+g[o>>2];g[r>>2]=T-e;g[s>>2]=b-f;g[a>>2]=e+T;g[o>>2]=f+b;b=+g[u>>2];f=+g[t>>2];T=f*0.0;b=v?b-T:T-b;f=v?-f:f;T=+g[p>>2];e=+g[q>>2];g[t>>2]=T-b;g[u>>2]=e-f;g[p>>2]=T+b;g[q>>2]=f+e;e=+g[A>>2];f=+g[B>>2];b=e*-.7071067811865476;if(v){T=f*-.7071067811865476;d=b-T;b=b+T;if(!((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0))){Q=d;R=b;S=+g[y>>2];T=+g[z>>2];O=S-Q;P=T-R;g[A>>2]=O;g[B>>2]=P;S=Q+S;T=R+T;g[y>>2]=S;g[z>>2]=T;i=C;return}$n(w,e,f,-.7071067811865476,-.7071067811865476);Q=+h[w>>3];R=+h[w+8>>3];S=+g[y>>2];T=+g[z>>2];O=S-Q;P=T-R;g[A>>2]=O;g[B>>2]=P;S=Q+S;T=R+T;g[y>>2]=S;g[z>>2]=T;i=C;return}else{d=f*.7071067811865476;b=b-d;d=e*.7071067811865476-d;if(!((b!=b|0.0!=0.0)&(d!=d|0.0!=0.0))){Q=b;R=d;S=+g[y>>2];T=+g[z>>2];O=S-Q;P=T-R;g[A>>2]=O;g[B>>2]=P;S=Q+S;T=R+T;g[y>>2]=S;g[z>>2]=T;i=C;return}$n(x,e,f,-.7071067811865476,.7071067811865476);Q=+h[x>>3];R=+h[x+8>>3];S=+g[y>>2];T=+g[z>>2];O=S-Q;P=T-R;g[A>>2]=O;g[B>>2]=P;S=Q+S;T=R+T;g[y>>2]=S;g[z>>2]=T;i=C;return}}function bl(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0.0,Ca=0.0,Da=0.0,Ea=0.0,Fa=0.0,Ga=0.0,Ha=0.0,Ia=0.0,Ja=0.0,Ka=0.0,La=0.0,Ma=0.0,Na=0.0;Aa=i;i=i+432|0;if((i|0)>=(j|0))ba();n=Aa+424|0;p=Aa+416|0;r=Aa+408|0;t=Aa+400|0;o=Aa+392|0;q=Aa+384|0;s=Aa+376|0;u=Aa+368|0;w=Aa+304|0;y=Aa+288|0;z=Aa+360|0;B=Aa+352|0;D=Aa+272|0;F=Aa+256|0;v=Aa+240|0;x=Aa+224|0;A=Aa+344|0;C=Aa+336|0;E=Aa+208|0;G=Aa+192|0;L=Aa+176|0;R=Aa+160|0;T=Aa+144|0;Z=Aa+328|0;$=Aa+128|0;ga=Aa+112|0;ia=Aa+96|0;M=Aa+80|0;S=Aa+64|0;U=Aa+48|0;_=Aa+320|0;aa=Aa+32|0;ha=Aa+16|0;ja=Aa;wa=c[a+4>>2]|0;J=c[a+8>>2]|0;K=(c[a+12>>2]|0)==1;xa=c[wa+4>>2]|0;a=J+4|0;c[J>>2]=c[wa>>2];c[a>>2]=xa;xa=c[wa+68>>2]|0;N=J+8|0;O=J+12|0;c[N>>2]=c[wa+64>>2];c[O>>2]=xa;xa=c[wa+36>>2]|0;X=J+16|0;Y=J+20|0;c[X>>2]=c[wa+32>>2];c[Y>>2]=xa;xa=c[wa+100>>2]|0;ea=J+24|0;fa=J+28|0;c[ea>>2]=c[wa+96>>2];c[fa>>2]=xa;xa=c[wa+20>>2]|0;ma=J+32|0;na=J+36|0;c[ma>>2]=c[wa+16>>2];c[na>>2]=xa;xa=c[wa+84>>2]|0;qa=J+40|0;ra=J+44|0;c[qa>>2]=c[wa+80>>2];c[ra>>2]=xa;xa=c[wa+52>>2]|0;ua=J+48|0;va=J+52|0;c[ua>>2]=c[wa+48>>2];c[va>>2]=xa;xa=c[wa+116>>2]|0;ya=J+56|0;za=J+60|0;c[ya>>2]=c[wa+112>>2];c[za>>2]=xa;xa=c[wa+12>>2]|0;H=J+64|0;I=J+68|0;c[H>>2]=c[wa+8>>2];c[I>>2]=xa;xa=c[wa+76>>2]|0;P=J+72|0;Q=J+76|0;c[P>>2]=c[wa+72>>2];c[Q>>2]=xa;xa=c[wa+44>>2]|0;V=J+80|0;W=J+84|0;c[V>>2]=c[wa+40>>2];c[W>>2]=xa;xa=c[wa+108>>2]|0;ca=J+88|0;da=J+92|0;c[ca>>2]=c[wa+104>>2];c[da>>2]=xa;xa=c[wa+28>>2]|0;ka=J+96|0;la=J+100|0;c[ka>>2]=c[wa+24>>2];c[la>>2]=xa;xa=c[wa+92>>2]|0;oa=J+104|0;pa=J+108|0;c[oa>>2]=c[wa+88>>2];c[pa>>2]=xa;xa=c[wa+60>>2]|0;sa=J+112|0;ta=J+116|0;c[sa>>2]=c[wa+56>>2];c[ta>>2]=xa;Na=+g[wa+120>>2];Ma=+g[wa+124>>2];wa=J+120|0;xa=J+124|0;l=+g[N>>2];m=+g[O>>2];Ka=+g[J>>2];Ia=+g[a>>2];g[N>>2]=Ka-l;g[O>>2]=Ia-m;Ka=l+Ka;Ia=m+Ia;m=+g[ea>>2];l=+g[fa>>2];La=+g[X>>2];Ja=+g[Y>>2];g[ea>>2]=La-m;g[fa>>2]=Ja-l;La=m+La;Ja=l+Ja;l=+g[qa>>2];m=+g[ra>>2];Ga=+g[ma>>2];Ea=+g[na>>2];g[qa>>2]=Ga-l;g[ra>>2]=Ea-m;Ga=l+Ga;Ea=m+Ea;m=+g[ya>>2];l=+g[za>>2];Ha=+g[ua>>2];Fa=+g[va>>2];f=Ha-m;e=Fa-l;g[ya>>2]=f;g[za>>2]=e;Ha=m+Ha;Fa=l+Fa;l=+g[P>>2];m=+g[Q>>2];Ca=+g[H>>2];d=+g[I>>2];g[P>>2]=Ca-l;g[Q>>2]=d-m;Ca=l+Ca;d=m+d;m=+g[ca>>2];l=+g[da>>2];Da=+g[V>>2];Ba=+g[W>>2];g[ca>>2]=Da-m;g[da>>2]=Ba-l;Da=m+Da;Ba=l+Ba;l=+g[oa>>2];m=+g[pa>>2];b=+g[ka>>2];k=+g[la>>2];g[oa>>2]=b-l;g[pa>>2]=k-m;b=l+b;k=m+k;m=+g[sa>>2];l=+g[ta>>2];g[wa>>2]=m-Na;g[xa>>2]=l-Ma;m=Na+m;l=Ma+l;g[X>>2]=Ka-La;g[Y>>2]=Ia-Ja;g[J>>2]=La+Ka;g[a>>2]=Ja+Ia;g[ua>>2]=Ga-Ha;g[va>>2]=Ea-Fa;g[ma>>2]=Ha+Ga;g[na>>2]=Fa+Ea;g[V>>2]=Ca-Da;g[W>>2]=d-Ba;g[H>>2]=Da+Ca;g[I>>2]=Ba+d;g[sa>>2]=b-m;g[ta>>2]=k-l;g[ka>>2]=m+b;g[la>>2]=l+k;k=+g[ea>>2];l=+g[fa>>2];b=k*0.0;if(K){d=l-b;b=l*-0.0-k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(n,-k,-l,0.0,1.0);d=+g[n>>2];b=+g[n+4>>2];f=+g[ya>>2];e=+g[za>>2]}Ma=+g[N>>2];Na=+g[O>>2];g[ea>>2]=Ma-d;g[fa>>2]=Na-b;g[N>>2]=d+Ma;g[O>>2]=b+Na;d=e-f*0.0;b=e*-0.0-f;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(p,-f,-e,0.0,1.0);d=+g[p>>2];b=+g[p+4>>2]}f=+g[qa>>2];e=+g[ra>>2];g[ya>>2]=f-d;g[za>>2]=e-b;g[qa>>2]=d+f;g[ra>>2]=b+e;e=+g[ca>>2];f=+g[da>>2];d=f-e*0.0;b=f*-0.0-e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(r,-e,-f,0.0,1.0);d=+g[r>>2];b=+g[r+4>>2]}f=+g[P>>2];e=+g[Q>>2];g[ca>>2]=f-d;g[da>>2]=e-b;g[P>>2]=d+f;g[Q>>2]=b+e;d=+g[wa>>2];e=+g[xa>>2];f=e-d*0.0;b=e*-0.0-d;if((f!=f|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(t,-d,-e,0.0,1.0);f=+g[t>>2];b=+g[t+4>>2]}Na=+g[oa>>2];e=+g[pa>>2];g[wa>>2]=Na-f;g[xa>>2]=e-b;e=b+e;f=f+Na}else{d=b-l;b=k+l*0.0;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(o,k,l,0.0,1.0);d=+g[o>>2];b=+g[o+4>>2];f=+g[ya>>2];e=+g[za>>2]}Ma=+g[N>>2];Na=+g[O>>2];g[ea>>2]=Ma-d;g[fa>>2]=Na-b;g[N>>2]=d+Ma;g[O>>2]=b+Na;d=f*0.0-e;b=f+e*0.0;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(q,f,e,0.0,1.0);d=+g[q>>2];b=+g[q+4>>2]}f=+g[qa>>2];e=+g[ra>>2];g[ya>>2]=f-d;g[za>>2]=e-b;g[qa>>2]=d+f;g[ra>>2]=b+e;e=+g[ca>>2];f=+g[da>>2];d=e*0.0-f;b=e+f*0.0;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(s,e,f,0.0,1.0);d=+g[s>>2];b=+g[s+4>>2]}f=+g[P>>2];e=+g[Q>>2];g[ca>>2]=f-d;g[da>>2]=e-b;g[P>>2]=d+f;g[Q>>2]=b+e;d=+g[wa>>2];e=+g[xa>>2];f=d*0.0-e;b=d+e*0.0;if((f!=f|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(u,d,e,0.0,1.0);f=+g[u>>2];b=+g[u+4>>2]}Na=+g[oa>>2];e=+g[pa>>2];g[wa>>2]=Na-f;g[xa>>2]=e-b;e=b+e;f=f+Na}g[oa>>2]=f;g[pa>>2]=e;l=+g[ma>>2];m=+g[na>>2];b=+g[J>>2];k=+g[a>>2];g[ma>>2]=b-l;g[na>>2]=k-m;g[J>>2]=l+b;g[a>>2]=m+k;k=+g[ka>>2];m=+g[la>>2];b=+g[H>>2];l=+g[I>>2];g[ka>>2]=b-k;g[la>>2]=l-m;g[H>>2]=k+b;g[I>>2]=m+l;l=+g[qa>>2];m=+g[ra>>2];b=l*.70710677;k=m*.70710677;if(K){d=b+k;b=k-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(w,l,m,.70710677,-.70710677);d=+h[w>>3];b=+h[w+8>>3];f=+g[oa>>2];e=+g[pa>>2]}Ma=d;Na=b;d=+g[N>>2];b=+g[O>>2];g[qa>>2]=d-Ma;g[ra>>2]=b-Na;g[N>>2]=Ma+d;g[O>>2]=Na+b;b=f*.70710677;Na=e*.70710677;d=b+Na;b=Na-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(y,f,e,.70710677,-.70710677);d=+h[y>>3];b=+h[y+8>>3]}Na=d;f=b;d=+g[P>>2];e=+g[Q>>2];g[oa>>2]=d-Na;g[pa>>2]=e-f;g[P>>2]=Na+d;g[Q>>2]=f+e;e=+g[ua>>2];f=+g[va>>2];d=f-e*0.0;b=f*-0.0-e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(z,-e,-f,0.0,1.0);d=+g[z>>2];b=+g[z+4>>2]}f=+g[X>>2];e=+g[Y>>2];g[ua>>2]=f-d;g[va>>2]=e-b;g[X>>2]=d+f;g[Y>>2]=b+e;e=+g[sa>>2];f=+g[ta>>2];d=f-e*0.0;b=f*-0.0-e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(B,-e,-f,0.0,1.0);d=+g[B>>2];b=+g[B+4>>2]}f=+g[V>>2];e=+g[W>>2];g[sa>>2]=f-d;g[ta>>2]=e-b;g[V>>2]=d+f;g[W>>2]=b+e;e=+g[ya>>2];f=+g[za>>2];Na=e*-.70710677;b=f*-.70710677;d=Na-b;b=Na+b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(D,e,f,-.70710677,-.70710677);d=+h[D>>3];b=+h[D+8>>3]}f=b;Na=+g[ea>>2];e=+g[fa>>2];g[ya>>2]=Na-d;g[za>>2]=e-f;g[ea>>2]=d+Na;g[fa>>2]=f+e;e=+g[wa>>2];f=+g[xa>>2];Na=e*-.70710677;b=f*-.70710677;d=Na-b;b=Na+b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(F,e,f,-.70710677,-.70710677);d=+h[F>>3];b=+h[F+8>>3]}Na=d;Ma=b;d=+g[ca>>2];b=+g[da>>2];g[wa>>2]=d-Na;g[xa>>2]=b-Ma;b=Ma+b;d=Na+d}else{d=b-k;b=b+k;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(v,l,m,.70710677,.70710677);d=+h[v>>3];b=+h[v+8>>3];f=+g[oa>>2];e=+g[pa>>2]}Ma=d;d=+g[N>>2];Na=+g[O>>2];g[qa>>2]=d-Ma;g[ra>>2]=Na-b;g[N>>2]=Ma+d;g[O>>2]=b+Na;Na=f*.70710677;b=e*.70710677;d=Na-b;b=Na+b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(x,f,e,.70710677,.70710677);d=+h[x>>3];b=+h[x+8>>3]}Na=d;f=b;d=+g[P>>2];e=+g[Q>>2];g[oa>>2]=d-Na;g[pa>>2]=e-f;g[P>>2]=Na+d;g[Q>>2]=f+e;e=+g[ua>>2];f=+g[va>>2];d=e*0.0-f;b=e+f*0.0;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(A,e,f,0.0,1.0);d=+g[A>>2];b=+g[A+4>>2]}f=+g[X>>2];e=+g[Y>>2];g[ua>>2]=f-d;g[va>>2]=e-b;g[X>>2]=d+f;g[Y>>2]=b+e;e=+g[sa>>2];f=+g[ta>>2];d=e*0.0-f;b=e+f*0.0;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(C,e,f,0.0,1.0);d=+g[C>>2];b=+g[C+4>>2]}f=+g[V>>2];e=+g[W>>2];g[sa>>2]=f-d;g[ta>>2]=e-b;g[V>>2]=d+f;g[W>>2]=b+e;e=+g[ya>>2];f=+g[za>>2];b=f*.70710677;d=e*-.70710677-b;b=e*.70710677-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(E,e,f,-.70710677,.70710677);d=+h[E>>3];b=+h[E+8>>3]}f=b;b=+g[ea>>2];e=+g[fa>>2];g[ya>>2]=b-d;g[za>>2]=e-f;g[ea>>2]=d+b;g[fa>>2]=f+e;e=+g[wa>>2];f=+g[xa>>2];b=f*.70710677;d=e*-.70710677-b;b=e*.70710677-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(G,e,f,-.70710677,.70710677);d=+h[G>>3];b=+h[G+8>>3]}Na=d;Ma=b;d=+g[ca>>2];b=+g[da>>2];g[wa>>2]=d-Na;g[xa>>2]=b-Ma;b=Ma+b;d=Na+d}g[ca>>2]=d;g[da>>2]=b;d=+g[H>>2];l=+g[I>>2];b=+g[J>>2];k=+g[a>>2];g[H>>2]=b-d;g[I>>2]=k-l;g[J>>2]=d+b;g[a>>2]=l+k;k=+g[P>>2];l=+g[Q>>2];b=k*.9238795;d=l*.38268346;e=k*.38268346;f=l*.9238795;if(K){d=b+d;b=f-e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(L,k,l,.9238795,-.38268346);d=+h[L>>3];b=+h[L+8>>3]}Na=d;f=b;b=+g[N>>2];e=+g[O>>2];g[P>>2]=b-Na;g[Q>>2]=e-f;g[N>>2]=Na+b;g[O>>2]=f+e;e=+g[V>>2];f=+g[W>>2];b=e*.70710677;Na=f*.70710677;d=b+Na;b=Na-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(R,e,f,.70710677,-.70710677);d=+h[R>>3];b=+h[R+8>>3]}Na=d;f=b;d=+g[X>>2];e=+g[Y>>2];g[V>>2]=d-Na;g[W>>2]=e-f;g[X>>2]=Na+d;g[Y>>2]=f+e;e=+g[ca>>2];f=+g[da>>2];d=e*.38268343+f*.9238795;b=f*.38268343-e*.9238795;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(T,e,f,.38268343,-.9238795);d=+h[T>>3];b=+h[T+8>>3]}Na=d;f=b;d=+g[ea>>2];e=+g[fa>>2];g[ca>>2]=d-Na;g[da>>2]=e-f;g[ea>>2]=Na+d;g[fa>>2]=f+e;e=+g[ka>>2];f=+g[la>>2];d=f-e*0.0;b=f*-0.0-e;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(Z,-e,-f,0.0,1.0);d=+g[Z>>2];b=+g[Z+4>>2]}f=+g[ma>>2];e=+g[na>>2];g[ka>>2]=f-d;g[la>>2]=e-b;g[ma>>2]=d+f;g[na>>2]=b+e;e=+g[oa>>2];f=+g[pa>>2];d=f*.92387956-e*.3826834;b=f*-.3826834-e*.92387956;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n($,e,f,-.3826834,-.92387956);d=+h[$>>3];b=+h[$+8>>3]}f=b;Na=+g[qa>>2];e=+g[ra>>2];g[oa>>2]=Na-d;g[pa>>2]=e-f;g[qa>>2]=d+Na;g[ra>>2]=f+e;e=+g[sa>>2];f=+g[ta>>2];Na=e*-.70710677;b=f*-.70710677;d=Na-b;b=Na+b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(ga,e,f,-.70710677,-.70710677);d=+h[ga>>3];b=+h[ga+8>>3]}Na=d;f=b;d=+g[ua>>2];e=+g[va>>2];g[sa>>2]=d-Na;g[ta>>2]=e-f;g[ua>>2]=Na+d;g[va>>2]=f+e;e=+g[wa>>2];f=+g[xa>>2];d=f*.38268349-e*.9238795;b=f*-.9238795-e*.38268349;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(ia,e,f,-.9238795,-.38268349);d=+h[ia>>3];b=+h[ia+8>>3]}La=d;Ka=b;Ma=+g[ya>>2];Na=+g[za>>2];g[wa>>2]=Ma-La;g[xa>>2]=Na-Ka;Na=Ka+Na;Ma=La+Ma;g[ya>>2]=Ma;g[za>>2]=Na;i=Aa;return}else{d=b-d;b=e+f;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(M,k,l,.9238795,.38268346);d=+h[M>>3];b=+h[M+8>>3]}f=b;Na=+g[N>>2];e=+g[O>>2];g[P>>2]=Na-d;g[Q>>2]=e-f;g[N>>2]=d+Na;g[O>>2]=f+e;e=+g[V>>2];f=+g[W>>2];Na=e*.70710677;b=f*.70710677;d=Na-b;b=Na+b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(S,e,f,.70710677,.70710677);d=+h[S>>3];b=+h[S+8>>3]}Na=d;f=b;d=+g[X>>2];e=+g[Y>>2];g[V>>2]=d-Na;g[W>>2]=e-f;g[X>>2]=Na+d;g[Y>>2]=f+e;e=+g[ca>>2];f=+g[da>>2];d=e*.38268343-f*.9238795;b=e*.9238795+f*.38268343;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(U,e,f,.38268343,.9238795);d=+h[U>>3];b=+h[U+8>>3]}Na=d;f=b;d=+g[ea>>2];e=+g[fa>>2];g[ca>>2]=d-Na;g[da>>2]=e-f;g[ea>>2]=Na+d;g[fa>>2]=f+e;e=+g[ka>>2];f=+g[la>>2];d=e*0.0-f;b=e+f*0.0;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){ao(_,e,f,0.0,1.0);d=+g[_>>2];b=+g[_+4>>2]}f=+g[ma>>2];e=+g[na>>2];g[ka>>2]=f-d;g[la>>2]=e-b;g[ma>>2]=d+f;g[na>>2]=b+e;e=+g[oa>>2];f=+g[pa>>2];d=e*-.3826834-f*.92387956;b=e*.92387956-f*.3826834;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(aa,e,f,-.3826834,.92387956);d=+h[aa>>3];b=+h[aa+8>>3]}f=b;b=+g[qa>>2];e=+g[ra>>2];g[oa>>2]=b-d;g[pa>>2]=e-f;g[qa>>2]=d+b;g[ra>>2]=f+e;e=+g[sa>>2];f=+g[ta>>2];b=f*.70710677;d=e*-.70710677-b;b=e*.70710677-b;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(ha,e,f,-.70710677,.70710677);d=+h[ha>>3];b=+h[ha+8>>3]}Na=d;f=b;d=+g[ua>>2];e=+g[va>>2];g[sa>>2]=d-Na;g[ta>>2]=e-f;g[ua>>2]=Na+d;g[va>>2]=f+e;e=+g[wa>>2];f=+g[xa>>2];d=e*-.9238795-f*.38268349;b=e*.38268349-f*.9238795;if((d!=d|0.0!=0.0)&(b!=b|0.0!=0.0)){$n(ja,e,f,-.9238795,.38268349);d=+h[ja>>3];b=+h[ja+8>>3]}La=d;Ka=b;Ma=+g[ya>>2];Na=+g[za>>2];g[wa>>2]=Ma-La;g[xa>>2]=Na-Ka;Na=Ka+Na;Ma=La+Ma;g[ya>>2]=Ma;g[za>>2]=Na;i=Aa;return}}function cl(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0.0,j=0,k=0;d=c[a>>2]|0;if(!d)return;e=a+44|0;f=a+4|0;a=a+8|0;b=0;do{Il(c[(c[e>>2]|0)+(b<<2)>>2]|0,(c[f>>2]|0)+8|0,(c[a>>2]|0)+(b<<3)|0);k=c[f>>2]|0;h=c[a>>2]|0;j=h+(b<<3)|0;h=h+(b<<3)+4|0;i=+g[k+4>>2]+ +g[h>>2];g[j>>2]=+g[k>>2]+ +g[j>>2];g[h>>2]=i;b=b+1|0}while((b|0)!=(d|0));return}function dl(a){a=a|0;var b=0,d=0;switch(c[a+20>>2]|0){case -1:case 1:{switch(c[a+24>>2]|0){case 5:{b=c[a+40>>2]|0;if(b|0)Yp(b);d=a+44|0;b=c[d>>2]|0;if(b|0){if(c[a>>2]|0){Hl(c[b>>2]|0);if((c[a>>2]|0)>>>0>1){b=1;do{Hl(c[(c[d>>2]|0)+(b<<2)>>2]|0);b=b+1|0}while(b>>>0<(c[a>>2]|0)>>>0)}b=c[d>>2]|0}Yp(b)}Yp(a);return}case 1:{Yp(c[a+44>>2]|0);Yp(c[a+48>>2]|0);Yp(a);return}case 2:{dl(c[a+64>>2]|0);dl(c[a+68>>2]|0);Yp(c[a+52>>2]|0);Yp(c[a+56>>2]|0);Yp(c[a+48>>2]|0);Yp(c[a+60>>2]|0);Yp(a);return}case 3:{Yp(c[a+40>>2]|0);Yp(c[a+44>>2]|0);Yp(c[a+48>>2]|0);Yp(c[a+52>>2]|0);dl(c[a+56>>2]|0);dl(c[a+60>>2]|0);Yp(a);return}case 4:{Yp(c[a+44>>2]|0);Yp(c[a+48>>2]|0);Yp(c[a+52>>2]|0);Yp(c[a+56>>2]|0);dl(c[a+60>>2]|0);dl(c[a+64>>2]|0);Yp(a);return}default:{Qp(41068,54,1,c[2348]|0)|0;kb(1)}}break}case 23:case 22:case 21:case 20:case 13:case 12:case 11:case 10:{Yp(a);return}case 31:case 30:return;default:{Qp(41123,52,1,c[2348]|0)|0;kb(1)}}}function el(a){a=a|0;qb[c[a+28>>2]&31](a);return}function fl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;d=Mk(a,b,d,e,f)|0;qb[c[d+28>>2]&31](d);dl(d);return}function gl(a){a=a|0;if(!a){Qp(41176,58,1,c[2348]|0)|0;a=0;return a|0}if((a|1|0)==17|((a|0)==13|(a>>>0<9|(a|0)==11))){a=5;return a|0}if(((a>>>31)+((a>>>30&1)+((a>>>29&1)+((a>>>28&1)+((a>>>27&1)+((a>>>26&1)+((a>>>25&1)+((a>>>24&1)+((a>>>23&1)+((a>>>22&1)+((a>>>21&1)+((a>>>20&1)+((a>>>19&1)+((a>>>18&1)+((a>>>17&1)+((a>>>16&1)+((a>>>15&1)+((a>>>14&1)+((a>>>13&1)+((a>>>12&1)+((a>>>11&1)+((a>>>10&1)+((a>>>9&1)+((a>>>8&1)+((a>>>7&1)+((a>>>6&1)+((a>>>5&1)+((a>>>4&1)+((a>>>3&1)+((a>>>2&1)+((a>>>1&1)+(a&1)))))))))))))))))))))))))))))))|0)==1){a=2;return a|0}if(!(Cl(a)|0)){a=2;return a|0}a=a+-1|0;a=((a>>>31)+((a>>>30&1)+((a>>>29&1)+((a>>>28&1)+((a>>>27&1)+((a>>>26&1)+((a>>>25&1)+((a>>>24&1)+((a>>>23&1)+((a>>>22&1)+((a>>>21&1)+((a>>>20&1)+((a>>>19&1)+((a>>>18&1)+((a>>>17&1)+((a>>>16&1)+((a>>>15&1)+((a>>>14&1)+((a>>>13&1)+((a>>>12&1)+((a>>>11&1)+((a>>>10&1)+((a>>>9&1)+((a>>>8&1)+((a>>>7&1)+((a>>>6&1)+((a>>>5&1)+((a>>>4&1)+((a>>>3&1)+((a>>>2&1)+((a>>>1&1)+(a&1)))))))))))))))))))))))))))))))|0)==1?3:4;return a|0}function hl(a,b){a=a|0;b=b|0;var c=0,d=0;if(!b){b=0;return b|0}else{c=a;a=0;d=0}while(1){a=a<<1|c&1;d=d+1|0;if((d|0)==(b|0))break;else c=c>>>1}return a|0}function il(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0;q=i;i=i+16|0;if((i|0)>=(j|0))ba();p=q;jl(a+1|0,c);e=+O(+(+(((a<<1)+-1|0)>>>0)*.6931471824645996));f=(a|0)==0;if(f){g[d>>2]=1.0;g[d+4>>2]=0.0;i=q;return}else b=0;do{r=c+(b<<3)|0;o=c+(b<<3)+4|0;n=+g[o>>2]/e;g[r>>2]=+g[r>>2]/e;g[o>>2]=n;b=b+1|0}while((b|0)!=(a|0));o=d+4|0;g[d>>2]=1.0;g[o>>2]=0.0;if(f){i=q;return}b=p+4|0;e=1.0;h=0.0;f=0;do{k=+g[c+(f<<3)>>2];l=+g[c+(f<<3)+4>>2];m=k*e-l*h;n=l*e+k*h;if((m!=m|0.0!=0.0)&(n!=n|0.0!=0.0)){ao(p,e,h,k,l);e=+g[p>>2];h=+g[b>>2]}else{e=m;h=n}g[d>>2]=e;g[o>>2]=h;f=f+1|0}while((f|0)!=(a|0));i=q;return}function jl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;I=i;i=i+64|0;if((i|0)>=(j|0))ba();E=I+56|0;e=I+48|0;f=I+40|0;v=I+24|0;y=I+16|0;D=I+32|0;F=I+8|0;G=I;z=i;i=i+((1*(a<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();A=i;i=i+((1*(a<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();H=i;i=i+((1*(a<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();a:do if(a>>>0>1){h=A+4|0;k=e+4|0;l=z+4|0;q=v+4|0;r=f+4|0;s=H+4|0;t=y+4|0;B=1;C=1;while(1){u=(B+(C&1)|0)>>>1;w=B&1;d=w+B|0;x=d>>>1;switch(B|0){case 1:{g[A>>2]=-1.0;g[h>>2]=0.0;g[H>>2]=-1.0;g[s>>2]=0.0;break}case 2:{g[A>>2]=-1.0;g[h>>2]=0.0;g[H>>2]=-1.5;g[s>>2]=.8660253882408142;break}default:{p=+g[A>>2];if(!w){n=+g[h>>2];o=p*2.0-n*0.0;m=p*0.0+n*2.0;if((o!=o|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(e,2.0,0.0,p,n);o=+g[e>>2];m=+g[k>>2]}J=c[l>>2]|0;c[v>>2]=c[z>>2];c[q>>2]=J;c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];Ko(f,E);n=m-+g[r>>2];m=o-+g[f>>2]}else{n=0.0;m=p*2.0-+g[z>>2]}g[H>>2]=m;g[s>>2]=n;if(d>>>0>3){d=1;do{J=d-w|0;o=+g[A+(J<<3)>>2];p=+g[A+(J<<3)+4>>2];n=o*2.0-p*0.0;m=o*0.0+p*2.0;if((n!=n|0.0!=0.0)&(m!=m|0.0!=0.0)){ao(y,2.0,0.0,o,p);n=+g[y>>2];m=+g[t>>2]}J=d+-1|0;p=m-+g[z+(J<<3)+4>>2];g[H+(d<<3)>>2]=n-+g[z+(J<<3)>>2];g[H+(d<<3)+4>>2]=p;d=d+1|0}while(d>>>0>>0)}if(x|0){d=0;do{K=H+(d<<3)|0;J=H+(d<<3)+4|0;kl(B,+g[K>>2],+g[J>>2],E,D);p=+g[D>>2];g[K>>2]=+g[E>>2]+p*0.0;g[J>>2]=p;d=d+1|0}while((d|0)!=(u|0))}}}fq(z|0,A|0,x-w<<3|0)|0;fq(A|0,H|0,x<<3|0)|0;B=B+1|0;if((B|0)==(a|0))break a;else C=C^1}}while(0);d=a&1;e=(a-d|0)>>>1;if(e|0){f=G+4|0;h=F+4|0;k=a>>>1;l=0;do{J=e-l+-1|0;D=c[H+(J<<3)>>2]|0;J=c[H+(J<<3)+4>>2]|0;K=l<<1;c[b+(K<<3)>>2]=D;c[b+(K<<3)+4>>2]=J;c[G>>2]=D;c[f>>2]=J;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];Ko(F,E);J=c[h>>2]|0;K=K|1;c[b+(K<<3)>>2]=c[F>>2];c[b+(K<<3)+4>>2]=J;l=l+1|0}while((l|0)!=(k|0))}if(!d){i=I;return}J=c[H+4>>2]|0;K=a+-1|0;c[b+(K<<3)>>2]=c[H>>2];c[b+(K<<3)+4>>2]=J;i=I;return}function kl(a,b,d,e,f){a=a|0;b=+b;d=+d;e=e|0;f=f|0;var h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;if(a>>>0<2){Qp(41235,53,1,c[2348]|0)|0;kb(1)}t=0;while(1){k=b*b-d*d;n=b*2.0*d;o=2;p=1.0;q=b+1.0;r=0.0;s=d;while(1){l=+(((o<<1)+-1|0)>>>0);m=q*l+k*p-n*r;l=n*p+(k*r+s*l);h=o>>>0>>0;i=h?l:s;j=h?m:q;o=o+1|0;if(o>>>0>a>>>0)break;else{p=h?q:p;q=j;r=h?s:r;s=i}}k=d*i+(m-b*j);i=l-b*i-d*j;j=i*i+k*k;if(j==0.0){h=8;break}b=b+-(l*i+m*k)/j;d=d+-(l*k-m*i)/j;t=t+1|0;if(t>>>0>=50){h=8;break}}if((h|0)==8){g[e>>2]=b;g[f>>2]=d;return}}function ll(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;w=i;i=i+48|0;if((i|0)>=(j|0))ba();b=w+32|0;f=w+24|0;h=w+16|0;q=w+8|0;r=w;v=a&1;if((a-v|0)>>>0<2)b=0;else{s=a+-1|0;k=+(a<<1>>>0);l=h+4|0;m=f+4|0;n=r+4|0;o=q+4|0;p=a>>>1;t=0;u=0;while(1){t=t+1|0;z=+((s+(t<<1)|0)>>>0)*3.141592653589793/k;g[h>>2]=z*0.0;g[l>>2]=z;c[b>>2]=c[h>>2];c[b+4>>2]=c[h+4>>2];Io(f,b);y=c[m>>2]|0;x=u|1;c[d+(u<<3)>>2]=c[f>>2];c[d+(u<<3)+4>>2]=y;g[r>>2]=z*-0.0;g[n>>2]=-z;c[b>>2]=c[r>>2];c[b+4>>2]=c[r+4>>2];Io(q,b);y=c[o>>2]|0;c[d+(x<<3)>>2]=c[q>>2];c[d+(x<<3)+4>>2]=y;if((t|0)==(p|0))break;else u=u+2|0}b=p<<1}if(v){g[d+(b<<3)>>2]=-1.0;g[d+(b<<3)+4>>2]=0.0;b=b|1}if((b|0)==(a|0)){g[e>>2]=1.0;g[e+4>>2]=0.0;i=w;return}else Ha(41363,41289,62,41313)}function ml(a,b,c,d,e){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;var f=0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0;s=i;i=i+16|0;if((i|0)>=(j|0))ba();r=s;m=b*b;k=+O(+(1.0/m+1.0));b=1.0/b;l=1.0/+(a>>>0);n=+P(+(b+k),+l);l=+P(+(k-b),+l);b=(n+l)*.5;l=(n-l)*.5;q=a&1;if((a-q|0)>>>0<2)c=0;else{c=a+-1|0;h=+(a<<1>>>0);k=b*0.0;f=a>>>1;o=0;p=0;while(1){o=o+1|0;n=+((c+(o<<1)|0)>>>0)*3.141592653589793/h;v=l*+Q(+n);n=+R(+n);u=k*n;n=b*n;t=p|1;g[d+(p<<3)>>2]=v-u;g[d+(p<<3)+4>>2]=-n;g[d+(t<<3)>>2]=v+u;g[d+(t<<3)+4>>2]=n;if((o|0)==(f|0))break;else p=p+2|0}c=f<<1}f=(q|0)!=0;if(f){g[d+(c<<3)>>2]=-l;g[d+(c<<3)+4>>2]=0.0;c=c|1}if((c|0)!=(a|0))Ha(41363,41326,85,41350);if(f)b=1.0;else b=1.0/+O(+(m+1.0));f=e+4|0;g[e>>2]=b;g[f>>2]=0.0;if(!a){i=s;return}o=r+4|0;h=0.0;c=0;do{k=+g[d+(c<<3)>>2];l=+g[d+(c<<3)+4>>2];m=k*b-l*h;n=l*b+k*h;if((m!=m|0.0!=0.0)&(n!=n|0.0!=0.0)){ao(r,b,h,k,l);b=+g[r>>2];h=+g[o>>2]}else{b=m;h=n}g[e>>2]=b;g[f>>2]=h;c=c+1|0}while((c|0)!=(a|0));i=s;return}function nl(a,b,d,e,f){a=a|0;b=+b;d=d|0;e=e|0;f=f|0;var h=0,l=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0;E=i;i=i+48|0;if((i|0)>=(j|0))ba();v=E+40|0;w=E+32|0;y=E+24|0;z=E+16|0;B=E+8|0;D=E;q=+O(+(1.0/(b*b)+1.0));b=1.0/b;r=+(a>>>0);s=r;r=1.0/r;t=+P(+(b+q),+r);r=+P(+(q-b),+r);b=(t+r)*.5;r=(t-r)*.5;x=a&1;A=(a-x|0)>>>1;C=(A|0)==0;if(C)h=0;else{h=a+-1|0;l=+(a<<1>>>0);q=b*0.0;m=v+4|0;n=w+4|0;o=a>>>1;p=0;u=0;while(1){p=p+1|0;t=+((h+(p<<1)|0)>>>0)*3.141592653589793/l;I=r*+Q(+t);t=+R(+t);H=q*t;t=b*t;_n(v,1.0,0.0,I-H,-t);G=c[m>>2]|0;F=u|1;c[e+(u<<3)>>2]=c[v>>2];c[e+(u<<3)+4>>2]=G;_n(w,1.0,0.0,I+H,t);G=c[n>>2]|0;c[e+(F<<3)>>2]=c[w>>2];c[e+(F<<3)+4>>2]=G;if((p|0)==(o|0))break;else u=u+2|0}h=o<<1}if(x){g[e+(h<<3)>>2]=-1.0/r;g[e+(h<<3)+4>>2]=0.0;h=h|1}if((h|0)!=(a|0))Ha(41363,41369,84,41393);if(C)p=0;else{h=y+4|0;m=z+4|0;n=a>>>1;o=0;p=0;while(1){o=o+1|0;I=+Q(+(+(((o<<1)+-1|0)>>>0)*1.5707963267948966/s));H=I*0.0;_n(y,-1.0,0.0,H,I);F=c[h>>2]|0;G=p|1;c[d+(p<<3)>>2]=c[y>>2];c[d+(p<<3)+4>>2]=F;_n(z,1.0,0.0,H,I);F=c[m>>2]|0;c[d+(G<<3)>>2]=c[z>>2];c[d+(G<<3)+4>>2]=F;if((o|0)==(n|0))break;else p=p+2|0}p=n<<1}if((p|0)!=(A<<1|0))Ha(41406,41369,95,41393);o=f+4|0;g[f>>2]=1.0;g[o>>2]=0.0;if(!a){b=0.0;l=1.0}else{h=B+4|0;l=1.0;b=0.0;m=0;do{q=+g[e+(m<<3)>>2];r=+g[e+(m<<3)+4>>2];s=q*l-r*b;t=r*l+q*b;if((s!=s|0.0!=0.0)&(t!=t|0.0!=0.0)){ao(B,l,b,q,r);l=+g[B>>2];b=+g[h>>2]}else{l=s;b=t}g[f>>2]=l;g[o>>2]=b;m=m+1|0}while((m|0)!=(a|0))}if(C){i=E;return}n=D+4|0;m=0;while(1){_n(D,l,b,+g[d+(m<<3)>>2],+g[d+(m<<3)+4>>2]);G=c[D>>2]|0;h=c[n>>2]|0;c[f>>2]=G;c[o>>2]=h;m=m+1|0;l=(c[k>>2]=G,+g[k>>2]);if(m>>>0>=p>>>0)break;else b=(c[k>>2]=h,+g[k>>2])}i=E;return}function ol(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,k=0,l=0,m=0.0,n=0.0,o=0;o=i;n=+O(+(1.0-a*a));if(a>.9999998807907104){m=+Y(+(n*.25));m=n*(n*((-1.0-m)*.25))-m}else{l=Wa()|0;k=i;i=i+((1*(b<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();f=(b|0)==0;if(!f){h=0;e=a;do{m=+O(+(1.0-e*e));e=(1.0-m)/(m+1.0);g[k+(h<<2)>>2]=e;h=h+1|0}while((h|0)!=(b|0));if(!f){e=1.5707963705062866;f=0;do{e=e*(+g[k+(f<<2)>>2]+1.0);f=f+1|0}while((f|0)!=(b|0))}else e=1.5707963705062866}else e=1.5707963705062866;Ga(l|0);m=e}if(a<3.9999998989515007e-04){n=+Y(+(a*.25));n=(-1.0-n)*.25*a*a-n;g[c>>2]=m;g[d>>2]=n;i=o;return}l=Wa()|0;k=i;i=i+((1*(b<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();f=(b|0)==0;if(!f){h=0;e=n;do{n=+O(+(1.0-e*e));e=(1.0-n)/(n+1.0);g[k+(h<<2)>>2]=e;h=h+1|0}while((h|0)!=(b|0));if(!f){e=1.5707963705062866;f=0;do{e=e*(+g[k+(f<<2)>>2]+1.0);f=f+1|0}while((f|0)!=(b|0))}else e=1.5707963705062866}else e=1.5707963705062866;Ga(l|0);n=e;g[c>>2]=m;g[d>>2]=n;i=o;return}function pl(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;if((i|0)>=(j|0))ba();o=s+32|0;p=s+24|0;t=s+16|0;q=s+8|0;r=s;h=+g[b+4>>2]*3.141592653589793*.5;g[t>>2]=+g[b>>2]*3.141592653589793*.5;g[t+4>>2]=h;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];Co(p,o);h=+g[p>>2];f=+g[p+4>>2];p=i;i=i+((1*(e<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!e){m=h;n=f;t=a+4|0;g[a>>2]=m;g[t>>2]=n;i=s;return}else b=0;do{n=+O(+(1.0-d*d));d=(1.0-n)/(n+1.0);g[p+(b<<2)>>2]=d;b=b+1|0}while((b|0)!=(e|0));if(!e){m=h;n=f;t=a+4|0;g[a>>2]=m;g[t>>2]=n;i=s;return}b=q+4|0;o=r+4|0;do{e=e+-1|0;m=+g[p+(e<<2)>>2];n=m+1.0;l=h*m;m=f*m;k=h*l-f*m;d=f*l+h*m;if((k!=k|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(q,l,m,h,f);k=+g[q>>2];d=+g[b>>2]}_n(r,h*n,f*n,k+1.0,d+0.0);h=+g[r>>2];f=+g[o>>2]}while((e|0)!=0);t=a+4|0;g[a>>2]=h;g[t>>2]=f;i=s;return}function ql(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0;s=i;i=i+48|0;if((i|0)>=(j|0))ba();o=s+32|0;p=s+24|0;t=s+16|0;q=s+8|0;r=s;h=+g[b+4>>2]*3.141592653589793*.5;g[t>>2]=+g[b>>2]*3.141592653589793*.5;g[t+4>>2]=h;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];Lo(p,o);h=+g[p>>2];f=+g[p+4>>2];p=i;i=i+((1*(e<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!e){m=h;n=f;t=a+4|0;g[a>>2]=m;g[t>>2]=n;i=s;return}else b=0;do{n=+O(+(1.0-d*d));d=(1.0-n)/(n+1.0);g[p+(b<<2)>>2]=d;b=b+1|0}while((b|0)!=(e|0));if(!e){m=h;n=f;t=a+4|0;g[a>>2]=m;g[t>>2]=n;i=s;return}b=q+4|0;o=r+4|0;do{e=e+-1|0;m=+g[p+(e<<2)>>2];n=m+1.0;l=h*m;m=f*m;k=h*l-f*m;d=f*l+h*m;if((k!=k|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(q,l,m,h,f);k=+g[q>>2];d=+g[b>>2]}_n(r,h*n,f*n,k+1.0,d+0.0);h=+g[r>>2];f=+g[o>>2]}while((e|0)!=0);t=a+4|0;g[a>>2]=h;g[t>>2]=f;i=s;return}function rl(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0.0,h=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=i;i=i+64|0;if((i|0)>=(j|0))ba();w=z+48|0;r=z+40|0;s=z+32|0;t=z+24|0;u=z+16|0;x=z+8|0;y=z;v=i;i=i+((1*(e<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();l=(e|0)==0;if(!l){k=0;f=d;do{o=+O(+(1.0-f*f));f=(1.0-o)/(o+1.0);g[v+(k<<2)>>2]=f;k=k+1|0}while((k|0)!=(e|0));h=+g[b>>2];f=+g[b+4>>2];if(!l){k=r+4|0;l=t+4|0;b=s+4|0;p=u+4|0;q=0;do{if(!q)o=d;else o=+g[v+(q+-1<<2)>>2];n=h*f;m=h*h-f*f;n=n+n;if((m!=m|0.0!=0.0)&(n!=n|0.0!=0.0)){ao(r,h,f,h,f);m=+g[r>>2];n=+g[k>>2]}g[t>>2]=1.0-o*(o*m);g[l>>2]=0.0-o*(o*n);c[w>>2]=c[t>>2];c[w+4>>2]=c[t+4>>2];Al(s,w);_n(u,h,f,+g[s>>2]+1.0,+g[b>>2]+0.0);f=+g[v+(q<<2)>>2]+1.0;h=+g[u>>2]*2.0/f;f=+g[p>>2]*2.0/f;q=q+1|0}while((q|0)!=(e|0))}}else{h=+g[b>>2];f=+g[b+4>>2]}g[y>>2]=h;g[y+4>>2]=f;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];Bl(x,w);d=+g[x+4>>2]*2.0/3.141592653589793;g[a>>2]=+g[x>>2]*2.0/3.141592653589793;g[a+4>>2]=d;i=z;return}function sl(a,b,d,e,f,h){a=a|0;b=+b;d=+d;e=e|0;f=f|0;h=h|0;var l=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ca=0,da=0;ca=i;i=i+192|0;if((i|0)>=(j|0))ba();W=ca+176|0;A=ca+144|0;z=ca+128|0;t=ca+168|0;u=ca+160|0;x=ca+152|0;C=ca+136|0;E=ca+120|0;G=ca+112|0;H=ca+96|0;I=ca+88|0;J=ca+72|0;N=ca+64|0;L=ca+56|0;Q=ca+48|0;R=ca+40|0;S=ca+32|0;Y=ca+24|0;Z=ca+16|0;_=ca+8|0;aa=ca;d=b/d;Ga(Wa()|0);ol(d,7,ca+104|0,ca+80|0);r=+(a>>>0);ol(d,7,W,A);K=+P(+(+X(+(+g[A>>2]*-3.141592653589793/+g[W>>2]))),+(1.0/r));D=(K*K+1.0+ +P(+K,6.0)+ +P(+K,12.0)+ +P(+K,20.0)+ +P(+K,30.0)+ +P(+K,42.0))/((K+0.0+ +P(+K,4.0)+ +P(+K,9.0)+ +P(+K,16.0)+ +P(+K,25.0)+ +P(+K,36.0))*2.0+1.0);K=D*(D*(+O(+K)*4.0));V=~~+M(+(r*.5))>>>0;T=~~r>>>0&1;F=i;i=i+((1*(V<<2)|0)+15&-16)|0;if((i|0)>=(j|0))ba();U=(V|0)==0;if(!U){m=0;do{g[F+(m<<2)>>2]=((+(m>>>0)+1.0)*2.0+-1.0)/r;m=m+1|0}while((m|0)!=(V|0));w=i;i=i+((1*(V<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!U){m=u+4|0;n=t+4|0;o=0;do{c[u>>2]=c[F+(o<<2)>>2];g[m>>2]=0.0;c[W>>2]=c[u>>2];c[W+4>>2]=c[u+4>>2];pl(t,W,K,7);da=c[n>>2]|0;c[w+(o<<3)>>2]=c[t>>2];c[w+(o<<3)+4>>2]=da;o=o+1|0}while((o|0)!=(V|0));m=i;i=i+((1*(V<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(U)x=m;else{n=x+4|0;o=0;do{_n(x,0.0,.9999999403953552,K*+g[w+(o<<3)>>2],K*+g[w+(o<<3)+4>>2]);da=c[n>>2]|0;c[m+(o<<3)>>2]=c[x>>2];c[m+(o<<3)+4>>2]=da;o=o+1|0}while((o|0)!=(V|0));x=m}}else y=6}else y=6;if((y|0)==6){m=i;i=i+((1*(V<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();x=m}g[z>>2]=0.0/b;g[z+4>>2]=1.0/b;c[W>>2]=c[z>>2];c[W+4>>2]=c[z+4>>2];rl(A,W,d,7);q=+g[A+4>>2];p=1.0-+g[A>>2];l=p*-0.0-q;d=q*0.0-p;if((l!=l|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(C,-0.0,-1.0,p,-q);l=+g[C>>2];d=+g[C+4>>2]}D=l/r;B=d/r;w=i;i=i+((1*(V<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();l=D*0.0-B;d=D+B*0.0;a:do if(!U){m=E+4|0;o=H+4|0;t=G+4|0;u=I+4|0;if((l!=l|0.0!=0.0)&(d!=d|0.0!=0.0)){n=0;while(1){s=+g[F+(n<<2)>>2];ao(E,0.0,1.0,D,B);r=-+g[m>>2];g[H>>2]=s-+g[E>>2];g[o>>2]=r;c[W>>2]=c[H>>2];c[W+4>>2]=c[H+4>>2];pl(G,W,K,7);r=+g[G>>2];s=+g[t>>2];q=r*0.0-s*.9999999403953552;p=r*.9999999403953552+s*0.0;if((q!=q|0.0!=0.0)&(p!=p|0.0!=0.0)){ao(I,0.0,.9999999403953552,r,s);q=+g[I>>2];p=+g[u>>2]}g[w+(n<<3)>>2]=q;g[w+(n<<3)+4>>2]=p;n=n+1|0;if((n|0)==(V|0))break a}}v=-d;m=0;do{g[H>>2]=+g[F+(m<<2)>>2]-l;g[o>>2]=v;c[W>>2]=c[H>>2];c[W+4>>2]=c[H+4>>2];pl(G,W,K,7);r=+g[G>>2];s=+g[t>>2];q=r*0.0-s*.9999999403953552;p=r*.9999999403953552+s*0.0;if((q!=q|0.0!=0.0)&(p!=p|0.0!=0.0)){ao(I,0.0,.9999999403953552,r,s);q=+g[I>>2];p=+g[u>>2]}g[w+(m<<3)>>2]=q;g[w+(m<<3)+4>>2]=p;m=m+1|0}while((m|0)!=(V|0))}while(0);if((l!=l|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(J,0.0,1.0,D,B);l=+g[J>>2];d=+g[J+4>>2]}g[L>>2]=l;g[L+4>>2]=d;c[W>>2]=c[L>>2];c[W+4>>2]=c[L+4>>2];ql(N,W,K,7);p=+g[N>>2];d=+g[N+4>>2];l=p*0.0-d*.9999999403953552;q=p*.9999999403953552+d*0.0;if((l!=l|0.0!=0.0)&(q!=q|0.0!=0.0)){ao(Q,0.0,.9999999403953552,p,d);l=+g[Q>>2];q=+g[Q+4>>2]}if(U)m=0;else{m=S+4|0;n=R+4|0;o=0;t=0;while(1){N=c[w+(o<<3)>>2]|0;Q=c[w+(o<<3)+4>>2]|0;da=t|1;c[f+(t<<3)>>2]=N;c[f+(t<<3)+4>>2]=Q;c[S>>2]=N;c[m>>2]=Q;c[W>>2]=c[S>>2];c[W+4>>2]=c[S+4>>2];Ko(R,W);Q=c[n>>2]|0;c[f+(da<<3)>>2]=c[R>>2];c[f+(da<<3)+4>>2]=Q;o=o+1|0;if((o|0)==(V|0))break;else t=t+2|0}m=V<<1}u=(T|0)!=0;if(u){g[f+(m<<3)>>2]=l;g[f+(m<<3)+4>>2]=q;m=m|1}if((m|0)!=(a|0))Ha(41413,41419,383,41442);if(U)if(!(V&2147483647))$=0;else Ha(41454,41419,390,41442);else{m=Z+4|0;n=Y+4|0;o=0;t=0;while(1){U=c[x+(o<<3)>>2]|0;$=c[x+(o<<3)+4>>2]|0;da=t|1;c[e+(t<<3)>>2]=U;c[e+(t<<3)+4>>2]=$;c[Z>>2]=U;c[m>>2]=$;c[W>>2]=c[Z>>2];c[W+4>>2]=c[Z+4>>2];Ko(Y,W);$=c[n>>2]|0;c[e+(da<<3)>>2]=c[Y>>2];c[e+(da<<3)+4>>2]=$;o=o+1|0;if((o|0)==(V|0))break;else t=t+2|0}$=V<<1}if(u)d=1.0;else d=1.0/+O(+(b*b+1.0));t=h+4|0;g[h>>2]=d;g[t>>2]=0.0;if(!a)l=0.0;else{n=_+4|0;l=0.0;m=0;do{p=+g[f+(m<<3)>>2];q=+g[f+(m<<3)+4>>2];r=p*d-q*l;s=q*d+p*l;if((r!=r|0.0!=0.0)&(s!=s|0.0!=0.0)){ao(_,d,l,p,q);d=+g[_>>2];l=+g[n>>2]}else{d=r;l=s}g[h>>2]=d;g[t>>2]=l;m=m+1|0}while((m|0)!=(a|0))}if(!$){i=ca;return}o=aa+4|0;n=0;while(1){_n(aa,d,l,+g[e+(n<<3)>>2],+g[e+(n<<3)+4>>2]);da=c[aa>>2]|0;m=c[o>>2]|0;c[h>>2]=da;c[t>>2]=m;n=n+1|0;d=(c[k>>2]=da,+g[k>>2]);if((n|0)==($|0))break;else l=(c[k>>2]=m,+g[k>>2])}i=ca;return}function tl(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,h=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0;O=i;i=i+64|0;if((i|0)>=(j|0))ba();E=O+48|0;F=O+40|0;G=O+32|0;J=O+24|0;K=O+16|0;L=O+8|0;M=O;if(!b){Qp(41461,62,1,c[2348]|0)|0;kb(1)}if(d<=0.0){Qp(41524,85,1,c[2348]|0)|0;kb(1)}H=Xp(80)|0;I=H+4|0;c[I>>2]=b;g[H+8>>2]=d;o=+(b>>>0);g[H+12>>2]=1.0/o;o=2.5132741603225375/o;D=H+28|0;g[D>>2]=o;B=~~+Z(+(+N(+(e/o))));C=H+24|0;B=B>>>0<2?2:B;c[C>>2]=B;g[H+32>>2]=o*+(B>>>0);B=b<<3;p=Xp(B)|0;c[H>>2]=p;fq(p|0,a|0,B|0)|0;B=H+16|0;c[B>>2]=qk(b)|0;p=H+60|0;c[p>>2]=gk(c[I>>2]|0)|0;a=c[C>>2]|0;f=a<<2;q=H+20|0;c[q>>2]=Xp(f)|0;b=Xp(f)|0;r=H+36|0;c[r>>2]=b;s=H+44|0;c[s>>2]=Xp(f)|0;t=H+48|0;c[t>>2]=Xp(f)|0;c[H+40>>2]=Xp(f)|0;f=c[I>>2]|0;u=i;i=i+((1*(f<<3)|0)+15&-16)|0;if((i|0)>=(j|0))ba();if(!a){L=c[B>>2]|0;rk(L);L=c[p>>2]|0;hk(L);L=c[I>>2]|0;M=H+76|0;c[M>>2]=L;M=H+72|0;c[M>>2]=0;M=H+52|0;c[M>>2]=0;M=H+56|0;c[M>>2]=0;M=H+64|0;g[M>>2]=0.0;M=c[s>>2]|0;L=c[C>>2]|0;L=L<<2;eq(M|0,0,L|0)|0;L=c[t>>2]|0;M=c[C>>2]|0;M=M<<2;eq(L|0,0,M|0)|0;i=O;return H|0}v=G+4|0;w=F+4|0;x=J+4|0;y=L+4|0;z=K+4|0;A=M+4|0;h=f;f=0;while(1){g[b+(f<<2)>>2]=(+(f>>>0)-+((a+-1|0)>>>0)*.5)*+g[D>>2];if(!h)a=0;else{b=0;do{a=c[H>>2]|0;h=c[a+(b<<3)+4>>2]|0;c[G>>2]=c[a+(b<<3)>>2];c[v>>2]=h;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];Ko(F,E);n=+g[F>>2];o=+g[w>>2];l=+g[(c[r>>2]|0)+(f<<2)>>2];k=l*-0.0;l=-l;m=+(b>>>0);e=m*k-k;d=m*l+k*0.0;if((e!=e|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(J,k,l,m,0.0);e=+g[J>>2];d=+g[x>>2]}g[L>>2]=e;g[y>>2]=d;c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];Io(K,E);k=+g[K>>2];l=+g[z>>2];e=n*k-o*l;d=o*k+n*l;if((e!=e|0.0!=0.0)&(d!=d|0.0!=0.0)){ao(M,n,o,k,l);e=+g[M>>2];d=+g[A>>2]}g[u+(b<<3)>>2]=e;g[u+(b<<3)+4>>2]=d;b=b+1|0;a=c[I>>2]|0}while(b>>>0>>0)}a=Gl(u,a)|0;c[(c[q>>2]|0)+(f<<2)>>2]=a;f=f+1|0;a=c[C>>2]|0;if(f>>>0>=a>>>0)break;b=c[r>>2]|0;h=c[I>>2]|0}L=c[B>>2]|0;rk(L);L=c[p>>2]|0;hk(L);L=c[I>>2]|0;M=H+76|0;c[M>>2]=L;M=H+72|0;c[M>>2]=0;M=H+52|0;c[M>>2]=0;M=H+56|0;c[M>>2]=0;M=H+64|0;g[M>>2]=0.0;M=c[s>>2]|0;L=c[C>>2]|0;L=L<<2;eq(M|0,0,L|0)|0;L=c[t>>2]|0;M=c[C>>2]|0;M=M<<2;eq(L|0,0,M|0)|0;i=O;return H|0}function ul(a){a=a|0;var b=0;rk(c[a+16>>2]|0);hk(c[a+60>>2]|0);c[a+76>>2]=c[a+4>>2];c[a+72>>2]=0;c[a+52>>2]=0;c[a+56>>2]=0;g[a+64>>2]=0.0;b=a+24|0;eq(c[a+44>>2]|0,0,c[b>>2]<<2|0)|0;eq(c[a+48>>2]|0,0,c[b>>2]<<2|0)|0;return}function vl(a){a=a|0;var b=0,d=0,e=0;uk(c[a+16>>2]|0);b=a+24|0;d=a+20|0;if(c[b>>2]|0){e=0;do{Hl(c[(c[d>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Yp(c[d>>2]|0);Yp(c[a+36>>2]|0);Yp(c[a+40>>2]|0);Yp(c[a+44>>2]|0);Yp(c[a+48>>2]|0);ik(c[a+60>>2]|0);Yp(c[a>>2]|0);Yp(a);return}function wl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0;C=i;i=i+48|0;if((i|0)>=(j|0))ba();v=C+40|0;x=C+32|0;y=C+16|0;w=C;u=C+24|0;B=C+8|0;k=a+16|0;z=c[k>>2]|0;A=c[b>>2]|0;b=c[b+4>>2]|0;c[u>>2]=A;c[u+4>>2]=b;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];tk(z,v);c[B>>2]=A;c[B+4>>2]=b;c[v>>2]=c[B>>2];c[v+4>>2]=c[B+4>>2];xl(a,v);B=a+76|0;b=c[B>>2]|0;if(b|0){c[B>>2]=b+-1;d=0;i=C;return d|0}A=a+44|0;z=a+48|0;t=a+24|0;gq(c[A>>2]|0,c[z>>2]|0,c[t>>2]<<2|0)|0;u=a+40|0;gq(c[z>>2]|0,c[u>>2]|0,c[t>>2]<<2|0)|0;sk(c[k>>2]|0,x);if(!(c[t>>2]|0)){b=a+52|0;q=c[u>>2]|0;p=0}else{k=a+20|0;m=y+4|0;n=w+4|0;o=a+12|0;r=a+68|0;b=a+52|0;s=0;l=0.0;while(1){Il(c[(c[k>>2]|0)+(s<<2)>>2]|0,c[x>>2]|0,y);q=c[m>>2]|0;c[w>>2]=c[y>>2];c[n>>2]=q;c[v>>2]=c[w>>2];c[v+4>>2]=c[w+4>>2];h=+wo(v);h=h*+g[o>>2]/+O(+(+g[r>>2]));q=c[u>>2]|0;g[q+(s<<2)>>2]=h;if(h>l)c[b>>2]=s;else h=l;s=s+1|0;p=c[t>>2]|0;if(s>>>0>=p>>>0)break;else l=h}}k=c[b>>2]|0;l=+g[q+(k<<2)>>2];o=a+72|0;switch(c[o>>2]|0){case 0:{if(!(l>+g[a+8>>2])){d=0;i=C;return d|0}c[a+56>>2]=k;c[o>>2]=1;d=0;i=C;return d|0}case 1:{m=a+56|0;n=c[m>>2]|0;b=c[z>>2]|0;h=+g[b+(n<<2)>>2];if(l>h){c[m>>2]=k;d=0;i=C;return d|0}if((p|0)==1){g[e>>2]=0.0;h=0.0}else{D=+g[(c[A>>2]|0)+(n<<2)>>2];F=+g[((n|0)==0?b+4|0:b+(n+-1<<2)|0)>>2];E=+g[b+(((n|0)==(p+-1|0)?-1:1)+n<<2)>>2];l=+g[q+(n<<2)>>2];h=h*2.0;g[e>>2]=+g[(c[a+36>>2]|0)+(n<<2)>>2]-(E-F)*(+g[a+28>>2]*.5)/(F+E-h);h=(l-D)*.5/(D+l-h);h=h<-.49900001287460327?-.49900001287460327:h;h=h>.49900001287460327?.49900001287460327:h}g[d>>2]=h;g[f>>2]=+O(+(+g[a+68>>2]));c[o>>2]=0;c[B>>2]=(c[a+4>>2]|0)>>>2;d=1;i=C;return d|0}default:{Qp(41610,69,1,c[2348]|0)|0;kb(1)}}return 0}function xl(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,k=0,l=0.0,m=0,n=0,o=0.0,p=0,q=0;n=i;i=i+32|0;if((i|0)>=(j|0))ba();m=n+24|0;p=n+16|0;q=n+8|0;k=n;l=+g[b>>2];e=+g[b+4>>2];g[q>>2]=l;g[q+4>>2]=e;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];Ko(p,m);f=+g[p>>2];h=+g[p+4>>2];d=l*f-e*h;o=e*f+l*h;if((d!=d|0.0!=0.0)&(o!=o|0.0!=0.0)){ao(k,l,e,f,h);d=+g[k>>2]}q=a+60|0;kk(c[q>>2]|0,m);jk(c[q>>2]|0,d);q=a+64|0;o=d+ +g[q>>2]-+g[m>>2];o=o<1.1920928955078125e-07?1.1920928955078125e-07:o;g[q>>2]=o;g[a+68>>2]=+g[a+12>>2]*o;i=n;return}function yl(a){a=a|0;if(!a)return;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;return}function zl(a){a=a|0;gq(a|0,45180,40)|0;return}function Al(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,h=0.0,l=0,m=0,n=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();m=d+8|0;n=d;l=c[b>>2]|0;b=c[b+4>>2]|0;c[n>>2]=l;c[n+4>>2]=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];f=+wo(m);e=(c[k>>2]=l,+g[k>>2]);h=+O(+((f+e)*.5));e=+O(+((f-e)*.5));b=(c[k>>2]=b,+g[k>>2])>0.0;f=e*0.0;g[a>>2]=h+(b?f:-f);g[a+4>>2]=b?e:-e;i=d;return}function Bl(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=i;i=i+64|0;if((i|0)>=(j|0))ba();m=r+48|0;n=r+8|0;o=r;k=r+40|0;p=r+32|0;l=r+24|0;q=r+16|0;h=+g[b>>2];f=+g[b+4>>2];d=h*f;e=h*h-f*f;d=d+d;b=(e!=e|0.0!=0.0)&(d!=d|0.0!=0.0);if(h>0.0^f>0.0){if(b){ao(l,h,f,h,f);e=+g[l>>2];d=+g[l+4>>2]}s=e+-1.0;g[n>>2]=s;g[n+4>>2]=d;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];e=+wo(m);t=+O(+((s+e)*.5));s=+O(+((e-s)*.5));p=d>0.0;e=s*0.0;e=h-(t+(p?e:-e));f=f-(p?s:-s);g[n>>2]=e;g[n+4>>2]=f;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];h=+Y(+(+wo(m)));g[o>>2]=e;g[o+4>>2]=f;c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];f=+Bo(m);h=h+f*0.0;e=f-h*0.0;d=f*-0.0-h;if((d!=d|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(q,-0.0,-1.0,h,f);e=+g[q>>2];d=+g[q+4>>2]}g[a>>2]=e;g[a+4>>2]=d;i=r;return}else{if(b){ao(k,h,f,h,f);e=+g[k>>2];d=+g[k+4>>2]}t=e+-1.0;g[n>>2]=t;g[n+4>>2]=d;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];e=+wo(m);s=+O(+((t+e)*.5));t=+O(+((e-t)*.5));q=d>0.0;e=t*0.0;e=h+(s+(q?e:-e));f=f+(q?t:-t);g[n>>2]=e;g[n+4>>2]=f;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];h=+Y(+(+wo(m)));g[o>>2]=e;g[o+4>>2]=f;c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];f=+Bo(m);h=h+f*0.0;e=f-h*0.0;d=f*-0.0-h;if((d!=d|0.0!=0.0)&(e!=e|0.0!=0.0)){ao(p,-0.0,-1.0,h,f);e=+g[p>>2];d=+g[p+4>>2]}g[a>>2]=e;g[a+4>>2]=d;i=r;return}}function Cl(a){a=a|0;var b=0;a:do if(a>>>0>3){b=2;while(1){if(!((a>>>0)%(b>>>0)|0)){a=0;break a}b=b+1|0;if(b>>>0>=a>>>0){a=1;break}}}else a=1;while(0);return a|0}function Dl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;g=a;e=0;do{if(g>>>0<2){f=0;break}else f=2;do{if(!((g>>>0)%(f>>>0)|0)){h=4;break}f=f+1|0}while(f>>>0<=g>>>0);if((h|0)==4){h=0;c[b+(e<<2)>>2]=f;g=(g>>>0)/(f>>>0)|0;e=e+1|0}f=g>>>0>1}while(f&e>>>0<40);if(f&(e|0)==40){l=c[2348]|0;c[k>>2]=a;c[k+4>>2]=40;Kp(l,41680,k)|0;kb(1)}else{c[d>>2]=e;i=l;return}}function El(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+160|0;if((i|0)>=(j|0))ba();m=o;l=a+-1|0;b=l;e=0;while(1){if(b>>>0<2){h=e;break}else d=2;while(1){if(!((b>>>0)%(d>>>0)|0)){n=4;break}d=d+1|0;if(d>>>0>b>>>0){d=e;break}}if((n|0)==4){n=0;b=(b>>>0)/(d>>>0)|0;c[m+(e<<2)>>2]=d;if(!e)d=1;else d=((c[m+(e+-1<<2)>>2]|0)!=(d|0)&1)+e|0}if(b>>>0>1&d>>>0<40)e=d;else{h=d;break}}if(a>>>0<3|(h|0)==0){n=2;i=o;return n|0}else b=2;while(1){g=0;while(1){f=(l>>>0)/((c[m+(g<<2)>>2]|0)>>>0)|0;if(!f)break;else{d=1;e=0}do{d=((_(d,b)|0)>>>0)%(a>>>0)|0;e=e+1|0}while((e|0)!=(f|0));k=(d|0)==1;g=g+1|0;if(!(g>>>0>>0&(k^1))){n=12;break}}if((n|0)==12?(n=0,!k):0){n=15;break}b=b+1|0;if(b>>>0>=a>>>0){n=15;break}}if((n|0)==15){i=o;return b|0}return 0}function Fl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(!b){e=1;return e|0}else{d=1;e=0}do{d=((_(d,a)|0)>>>0)%(c>>>0)|0;e=e+1|0}while((e|0)!=(b|0));return d|0}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0;d=Xp(8)|0;c[d+4>>2]=b;b=b<<3;e=Xp(b)|0;c[d>>2]=e;fq(e|0,a|0,b|0)|0;return d|0}function Hl(a){a=a|0;Yp(c[a>>2]|0);Yp(a);return}function Il(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+16|0;if((i|0)>=(j|0))ba();r=t;s=c[a>>2]|0;a=c[a+4>>2]|0;if(!a){n=0.0;o=0.0;b=d+4|0;g[d>>2]=n;g[b>>2]=o;i=t;return}p=r+4|0;q=0;f=0.0;e=0.0;do{n=+g[s+(q<<3)>>2];o=+g[s+(q<<3)+4>>2];l=+g[b+(q<<3)>>2];m=+g[b+(q<<3)+4>>2];h=n*l-o*m;k=o*l+n*m;if((h!=h|0.0!=0.0)&(k!=k|0.0!=0.0)){ao(r,n,o,l,m);h=+g[r>>2];k=+g[p>>2]}f=f+h;e=e+k;q=q+1|0}while((q|0)!=(a|0));b=d+4|0;g[d>>2]=f;g[b>>2]=e;i=t;return}function Jl(a){a=a|0;var b=0,d=0,e=0,f=0;e=Xp(16)|0;c[e>>2]=a;c[e+12>>2]=4;d=(~~+M(+(+O(+(+(a>>>0)))))>>>0)+1|0;c[e+4>>2]=d;f=e+8|0;b=(a>>>0)/(d>>>0)|0;while(1)if((_(d,b)|0)>>>0>a>>>0)break;else b=b+1|0;c[f>>2]=b;return e|0}function Kl(a){a=a|0;Yp(a);return}function Ll(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Ml(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;gq(e|0,d|0,c[b>>2]|0)|0;l=b+12|0;d=c[l>>2]|0;if(!d)return;g=c[b>>2]|0;m=b+4|0;i=c[m>>2]|0;n=b+8|0;j=c[n>>2]|0;k=g>>>1;if(k){d=0;f=0;g=(g>>>0)/3|0;do{do{h=(_(f,j)|0)+g|0;f=f+1|0;if((f|0)==(i|0)){f=0;g=((g+1|0)>>>0)%(j>>>0)|0}}while(h>>>0>=k>>>0);p=e+(h<<1|1)|0;o=a[p>>0]|0;h=e+(d<<1)|0;a[p>>0]=a[h>>0]|0;a[h>>0]=o;d=d+1|0}while((d|0)!=(k|0));d=c[l>>2]|0}if(d>>>0<=1)return;f=c[b>>2]|0;i=c[m>>2]|0;j=(c[n>>2]|0)+2|0;k=f>>>1;if(k){d=0;h=0;g=(f>>>0)/3|0;while(1){f=h;do{h=(_(f,j)|0)+g|0;f=f+1|0;if((f|0)==(i|0)){f=0;g=((g+1|0)>>>0)%(j>>>0)|0}}while(h>>>0>=k>>>0);q=e+(d<<1)|0;o=a[q>>0]|0;p=e+(h<<1|1)|0;h=a[p>>0]|0;a[q>>0]=h&15|o&240;a[p>>0]=h&240|o&15;d=d+1|0;if((d|0)==(k|0))break;else h=f}d=c[l>>2]|0}if(d>>>0<=2)return;f=c[b>>2]|0;i=c[m>>2]|0;j=(c[n>>2]|0)+4|0;k=f>>>1;if(k){d=0;h=0;g=(f>>>0)/3|0;while(1){f=h;do{h=(_(f,j)|0)+g|0;f=f+1|0;if((f|0)==(i|0)){f=0;g=((g+1|0)>>>0)%(j>>>0)|0}}while(h>>>0>=k>>>0);r=e+(d<<1)|0;p=a[r>>0]|0;q=e+(h<<1|1)|0;o=a[q>>0]|0;a[r>>0]=o&85|p&170;a[q>>0]=o&170|p&85;d=d+1|0;if((d|0)==(k|0))break;else h=f}d=c[l>>2]|0}if(d>>>0<=3)return;g=c[b>>2]|0;k=c[m>>2]|0;i=(c[n>>2]|0)+8|0;j=g>>>1;if(!j)return;d=0;f=0;g=(g>>>0)/3|0;do{do{h=(_(f,i)|0)+g|0;f=f+1|0;if((f|0)==(k|0)){f=0;g=((g+1|0)>>>0)%(i>>>0)|0}}while(h>>>0>=j>>>0);o=e+(d<<1)|0;q=a[o>>0]|0;r=e+(h<<1|1)|0;p=a[r>>0]|0;a[o>>0]=p&51|q&204;a[r>>0]=p&204|q&51;d=d+1|0}while((d|0)!=(j|0));return}function Nl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;gq(e|0,d|0,c[b>>2]|0)|0;o=b+12|0;d=c[o>>2]|0;if(d>>>0>3){f=c[b>>2]|0;j=c[b+4>>2]|0;k=(c[b+8>>2]|0)+8|0;i=f>>>1;if(!i)f=11;else{d=0;h=0;g=(f>>>0)/3|0;while(1){f=h;do{h=(_(f,k)|0)+g|0;f=f+1|0;if((f|0)==(j|0)){f=0;g=((g+1|0)>>>0)%(k>>>0)|0}}while(h>>>0>=i>>>0);t=e+(d<<1)|0;s=a[t>>0]|0;l=e+(h<<1|1)|0;h=a[l>>0]|0;a[t>>0]=h&51|s&204;a[l>>0]=h&204|s&51;d=d+1|0;if((d|0)==(i|0))break;else h=f}d=c[o>>2]|0;f=10}}else f=10;if((f|0)==10)if(d>>>0>2)f=11;else f=19;if((f|0)==11){d=c[b>>2]|0;j=c[b+4>>2]|0;k=(c[b+8>>2]|0)+4|0;l=d>>>1;if(!l)f=20;else{i=0;g=0;f=(d>>>0)/3|0;while(1){d=g;do{h=(_(d,k)|0)+f|0;d=d+1|0;if((d|0)==(j|0)){d=0;f=((f+1|0)>>>0)%(k>>>0)|0}}while(h>>>0>=l>>>0);g=d;u=e+(i<<1)|0;t=a[u>>0]|0;d=e+(h<<1|1)|0;s=a[d>>0]|0;a[u>>0]=s&85|t&170;a[d>>0]=s&170|t&85;d=i+1|0;if((d|0)==(l|0))break;else i=d}d=c[o>>2]|0;f=19}}if((f|0)==19)if(d>>>0>1)f=20;else{m=d;f=28}if((f|0)==20?(n=c[b>>2]|0,p=c[b+4>>2]|0,q=(c[b+8>>2]|0)+2|0,r=n>>>1,r|0):0){d=0;f=0;g=(n>>>0)/3|0;do{do{h=(_(f,q)|0)+g|0;f=f+1|0;if((f|0)==(p|0)){f=0;g=((g+1|0)>>>0)%(q>>>0)|0}}while(h>>>0>=r>>>0);n=e+(d<<1)|0;t=a[n>>0]|0;u=e+(h<<1|1)|0;s=a[u>>0]|0;a[n>>0]=s&15|t&240;a[u>>0]=s&240|t&15;d=d+1|0}while((d|0)!=(r|0));m=c[o>>2]|0;f=28}if((f|0)==28?(m|0)==0:0)return;f=c[b>>2]|0;k=c[b+4>>2]|0;i=c[b+8>>2]|0;j=f>>>1;if(!j)return;d=0;h=0;g=(f>>>0)/3|0;while(1){f=h;do{h=(_(f,i)|0)+g|0;f=f+1|0;if((f|0)==(k|0)){f=0;g=((g+1|0)>>>0)%(i>>>0)|0}}while(h>>>0>=j>>>0);s=e+(h<<1|1)|0;t=a[s>>0]|0;u=e+(d<<1)|0;a[s>>0]=a[u>>0]|0;a[u>>0]=t;d=d+1|0;if((d|0)==(j|0))break;else h=f}return}function Ol(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;gq(f|0,e|0,c[b>>2]<<3|0)|0;p=b+12|0;e=c[p>>2]|0;if(e>>>0>3){g=c[b>>2]|0;l=c[b+4>>2]|0;j=(c[b+8>>2]|0)+8|0;k=g>>>1;if(!k)g=11;else{e=0;i=0;h=(g>>>0)/3|0;while(1){g=i;do{i=(_(g,j)|0)+h|0;g=g+1|0;if((g|0)==(l|0)){g=0;h=((h+1|0)>>>0)%(j>>>0)|0}}while(i>>>0>=k>>>0);t=i<<4;m=e<<4;v=f+(t|10)|0;u=a[v>>0]|0;i=f+(m|2)|0;a[v>>0]=a[i>>0]|0;a[i>>0]=u;i=f+(t|11)|0;u=a[i>>0]|0;v=f+(m|3)|0;a[i>>0]=a[v>>0]|0;a[v>>0]=u;v=f+(t|14)|0;u=a[v>>0]|0;i=f+(m|6)|0;a[v>>0]=a[i>>0]|0;a[i>>0]=u;t=f+(t|15)|0;i=a[t>>0]|0;m=f+(m|7)|0;a[t>>0]=a[m>>0]|0;a[m>>0]=i;e=e+1|0;if((e|0)==(k|0))break;else i=g}e=c[p>>2]|0;g=10}}else g=10;if((g|0)==10)if(e>>>0>2)g=11;else g=19;if((g|0)==11){e=c[b>>2]|0;k=c[b+4>>2]|0;l=(c[b+8>>2]|0)+4|0;m=e>>>1;if(!m)g=20;else{j=0;h=0;g=(e>>>0)/3|0;while(1){e=h;do{i=(_(e,l)|0)+g|0;e=e+1|0;if((e|0)==(k|0)){e=0;g=((g+1|0)>>>0)%(l>>>0)|0}}while(i>>>0>=m>>>0);h=e;u=i<<4;e=j<<4;i=f+(u|9)|0;t=a[i>>0]|0;v=f+(e|1)|0;a[i>>0]=a[v>>0]|0;a[v>>0]=t;v=f+(u|11)|0;t=a[v>>0]|0;i=f+(e|3)|0;a[v>>0]=a[i>>0]|0;a[i>>0]=t;i=f+(u|13)|0;t=a[i>>0]|0;v=f+(e|5)|0;a[i>>0]=a[v>>0]|0;a[v>>0]=t;u=f+(u|15)|0;v=a[u>>0]|0;e=f+(e|7)|0;a[u>>0]=a[e>>0]|0;a[e>>0]=v;e=j+1|0;if((e|0)==(m|0))break;else j=e}e=c[p>>2]|0;g=19}}if((g|0)==19)if(e>>>0>1)g=20;else{n=e;g=28}if((g|0)==20?(o=c[b>>2]|0,s=c[b+4>>2]|0,q=(c[b+8>>2]|0)+2|0,r=o>>>1,r|0):0){e=0;g=0;h=(o>>>0)/3|0;do{do{i=(_(g,q)|0)+h|0;g=g+1|0;if((g|0)==(s|0)){g=0;h=((h+1|0)>>>0)%(q>>>0)|0}}while(i>>>0>=r>>>0);t=i<<4;v=e<<4;n=f+(t|12)|0;o=a[n>>0]|0;u=f+(v|4)|0;a[n>>0]=a[u>>0]|0;a[u>>0]=o;u=f+(t|13)|0;o=a[u>>0]|0;n=f+(v|5)|0;a[u>>0]=a[n>>0]|0;a[n>>0]=o;n=f+(t|14)|0;o=a[n>>0]|0;u=f+(v|6)|0;a[n>>0]=a[u>>0]|0;a[u>>0]=o;t=f+(t|15)|0;u=a[t>>0]|0;v=f+(v|7)|0;a[t>>0]=a[v>>0]|0;a[v>>0]=u;e=e+1|0}while((e|0)!=(r|0));n=c[p>>2]|0;g=28}if((g|0)==28?(n|0)==0:0)return;g=c[b>>2]|0;l=c[b+4>>2]|0;j=c[b+8>>2]|0;k=g>>>1;if(!k)return;e=0;i=0;h=(g>>>0)/3|0;while(1){g=i;do{i=(_(g,j)|0)+h|0;g=g+1|0;if((g|0)==(l|0)){g=0;h=((h+1|0)>>>0)%(j>>>0)|0}}while(i>>>0>=k>>>0);t=f+(i<<4|8)|0;u=t;b=u;b=d[b>>0]|d[b+1>>0]<<8|d[b+2>>0]<<16|d[b+3>>0]<<24;u=u+4|0;u=d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24;v=f+(e<<4)|0;s=v;q=s;q=d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24;s=s+4|0;s=d[s>>0]|d[s+1>>0]<<8|d[s+2>>0]<<16|d[s+3>>0]<<24;r=t;a[r>>0]=q;a[r+1>>0]=q>>8;a[r+2>>0]=q>>16;a[r+3>>0]=q>>24;t=t+4|0;a[t>>0]=s;a[t+1>>0]=s>>8;a[t+2>>0]=s>>16;a[t+3>>0]=s>>24;t=v;a[t>>0]=b;a[t+1>>0]=b>>8;a[t+2>>0]=b>>16;a[t+3>>0]=b>>24;v=v+4|0;a[v>>0]=u;a[v+1>>0]=u>>8;a[v+2>>0]=u>>16;a[v+3>>0]=u>>24;e=e+1|0;if((e|0)==(k|0))break;else i=g}return}function Pl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0;h=i;i=i+96|0;if((i|0)>=(j|0))ba();g=h;f=h+80|0;wm(e,41739);if(!b){Ql(e,0,41748,h+72|0);g=0;i=h;return g|0}c[f>>2]=b;c[f+4>>2]=0;c[g>>2]=7;c[g+4>>2]=f;a[g+8>>0]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g+24>>2]=1;c[g+28>>2]=0;c[g+36>>2]=0;b=g+40|0;if(Zl(b)|0){g=0;i=h;return g|0}c[g+52>>2]=d;k=g+60|0;c[k>>2]=-1;f=Sl(g,d,e)|0;if((c[k>>2]|0)==256){k=g+64|0;Yl(c[k>>2]|0);c[k>>2]=0;c[k+4>>2]=0}_l(b);k=f;i=h;return k|0}function Ql(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+368|0;if((i|0)>=(j|0))ba();o=p+16|0;m=p+8|0;l=p;h=p+24|0;g=p+200|0;n=p+40|0;if(!b){i=p;return}c[h>>2]=f;Qo(g,160,e,h)|0;a[g+159>>0]=0;do if(d){k=am(d+40|0)|0;e=c[d+24>>2]|0;f=c[d+28>>2]|0;h=c[d+36>>2]|0;if(k|0?a[k>>0]|0:0){if((c[d+44>>2]|0)>>>0>=21)break;c[l>>2]=g;c[l+4>>2]=k;pp(n,160,41764,l)|0;a[n+159>>0]=0;g=n;break}if((c[d+20>>2]|0)!=-2){c[m>>2]=g;pp(n,160,41777,m)|0;a[n+159>>0]=0;g=n}}else{f=-1;e=-1;h=0}while(0);c[o>>2]=g;xm(b,e,f,h,41797,o);i=p;return}function Rl(b){b=b|0;var d=0,e=0;d=b+4|0;e=c[d>>2]|0;b=a[(c[b>>2]|0)+e>>0]|0;if(!(b<<24>>24)){e=-1;return e|0}c[d>>2]=e+1;e=b&255;return e|0}function Sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();f=h+8|0;e=h;c[a+56>>2]=0;Tl(a,d);a:do if(!(b&4)){switch(c[a+60>>2]|0){case 123:case 91:{g=4;break a}default:{}}Ql(d,a,42071,e);e=0}else g=4;while(0);do if((g|0)==4){e=Wl(a,b,d)|0;if(e){if((b&2|0)==0?(Tl(a,d),c[a+60>>2]|0):0){Ql(d,a,42317,f);d=e+4|0;b=c[d>>2]|0;if((b|0)==-1){e=0;break}g=b+-1|0;c[d>>2]=g;if(g|0){e=0;break}km(e);e=0;break}if(d)c[d+8>>2]=c[a+36>>2]}else e=0}while(0);i=h;return e|0}function Tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0;B=i;i=i+112|0;if((i|0)>=(j|0))ba();r=B+104|0;k=B+96|0;g=B+88|0;v=B+80|0;u=B+72|0;x=B+64|0;t=B+56|0;w=B+48|0;n=B+40|0;m=B+32|0;p=B+24|0;o=B+16|0;l=B+8|0;z=B+108|0;q=B;y=b+40|0;$l(y);A=b+60|0;if((c[A>>2]|0)==256){s=b+64|0;Yl(c[s>>2]|0);c[s>>2]=0;c[s+4>>2]=0}a:while(1){f=Ul(b,d)|0;switch(f|0){case 9:case 10:case 13:case 32:break;case -1:{s=5;break a}case -2:{s=6;break a}default:{s=7;break a}}}if((s|0)==5){c[A>>2]=0;i=B;return}else if((s|0)==6){c[A>>2]=-1;i=B;return}else if((s|0)==7){bm(y,f&255)|0;D=f|32;if((f|0)==44|((f|0)==58|((D|0)==125|(D|0)==123))){c[A>>2]=f;i=B;return}if((f|0)==34){q=b+64|0;c[q>>2]=0;c[A>>2]=-1;f=Ul(b,d)|0;if(f>>>0<4294967294)bm(y,f&255)|0;b:while(1){switch(f|0){case 34:{s=41;break b}case -2:break b;case -1:{s=13;break b}default:{}}if(f>>>0<32){e=f;s=15;break}g=Ul(b,d)|0;if(g>>>0<4294967294)bm(y,g&255)|0;if((f|0)!=92){f=g;continue}if((g|0)!=117){if((g|4|0)!=102)switch(g|0){case 34:case 47:case 92:case 110:case 114:case 116:break;default:{s=40;break b}}f=Ul(b,d)|0;if(f>>>0>=4294967294)continue;bm(y,f&255)|0;continue}f=Ul(b,d)|0;if(f>>>0<4294967294)bm(y,f&255)|0;if((f+-48|0)>>>0>=10)switch(f|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:{s=32;break b}}f=Ul(b,d)|0;if(f>>>0<4294967294)bm(y,f&255)|0;if((f+-48|0)>>>0>=10)switch(f|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:{s=32;break b}}f=Ul(b,d)|0;if(f>>>0<4294967294)bm(y,f&255)|0;if((f+-48|0)>>>0>=10)switch(f|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:{s=32;break b}}f=Ul(b,d)|0;if(f>>>0<4294967294)bm(y,f&255)|0;if((f+-48|0)>>>0>=10)switch(f|0){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:{s=32;break b}}f=Ul(b,d)|0;if(f>>>0>=4294967294)continue;bm(y,f&255)|0}c:do if((s|0)==13)Ql(d,b,41827,l);else if((s|0)==15){if((e|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((e|0)!=10){if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0;if((e|0)==10){Ql(d,b,41850,o);break}else{c[p>>2]=e;Ql(d,b,41869,p);break}}else if((s|0)==32)Ql(d,b,41892,m);else if((s|0)==40)Ql(d,b,41892,n);else if((s|0)==41?(e=Xl((c[b+44>>2]|0)+1|0)|0,e|0):0){c[q>>2]=e;g=(am(y)|0)+1|0;f=a[g>>0]|0;d:do if(f<<24>>24!=34){e:while(1){k=g+1|0;do if(f<<24>>24==92){f=a[k>>0]|0;if(f<<24>>24==117){f=Vl(k)|0;if((f|0)<0){e=g;s=47;break e}l=g+6|0;switch(f&-1024|0){case 56320:{e=f;s=57;break e}case 55296:{if((a[l>>0]|0)!=92){e=f;s=56;break e}k=g+7|0;if((a[k>>0]|0)!=117){e=f;s=56;break e}k=Vl(k)|0;if((k|0)<0){e=l;s=52;break e}if((k&-1024|0)!=56320){e=k;s=54;break e}g=g+12|0;f=(f<<10)+-56613888+k|0;break}default:g=l}em(f,e,z)|0;e=e+(c[z>>2]|0)|0;break}else{switch(f<<24>>24|0){case 47:case 92:case 34:{a[e>>0]=f;break}case 98:{a[e>>0]=8;break}case 102:{a[e>>0]=12;break}case 110:{a[e>>0]=10;break}case 114:{a[e>>0]=13;break}case 116:{a[e>>0]=9;break}default:{}}g=g+2|0;e=e+1|0;break}}else{a[e>>0]=f;g=k;e=e+1|0}while(0);f=a[g>>0]|0;if(f<<24>>24==34)break d}if((s|0)==47){c[w>>2]=e;Ql(d,b,41907,w)}else if((s|0)==52){c[t>>2]=e;Ql(d,b,41907,t)}else if((s|0)==54){c[x>>2]=f;c[x+4>>2]=e;Ql(d,b,41937,x)}else if((s|0)==56){c[u>>2]=e;Ql(d,b,41968,u)}else if((s|0)==57){c[v>>2]=e;Ql(d,b,41968,v)}break c}while(0);a[e>>0]=0;c[q+4>>2]=e-(c[q>>2]|0);c[A>>2]=256;i=B;return}while(0);Yl(c[q>>2]|0);c[q>>2]=0;c[q+4>>2]=0;i=B;return}e=(f|0)==45;if(!(e|(f+-48|0)>>>0<10)){if(((f&-33)+-65|0)>>>0>=26){f=b+16|0;e=a[(c[f>>2]|0)+(b+8)>>0]|0;if(e<<24>>24){g=b+36|0;do{bm(y,e)|0;D=(c[f>>2]|0)+1|0;c[f>>2]=D;c[g>>2]=(c[g>>2]|0)+1;e=a[b+8+D>>0]|0}while(e<<24>>24!=0)}c[A>>2]=-1;i=B;return}do{f=Ul(b,d)|0;e=f>>>0<4294967294;if(e)bm(y,f&255)|0}while(((f&-33)+-65|0)>>>0<26);if(e){if((f|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((f|0)!=10){if(fm(f&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0}e=am(y)|0;if(!(dp(e,42055)|0)){c[A>>2]=259;i=B;return}if(!(dp(e,42060)|0)){c[A>>2]=260;i=B;return}if(!(dp(e,42066)|0)){c[A>>2]=261;i=B;return}else{c[A>>2]=-1;i=B;return}}c[A>>2]=-1;if(e){e=Ul(b,d)|0;if(e>>>0<4294967294){bm(y,e&255)|0;s=87}else s=96}else{e=f;s=87}if((s|0)==87)if((e|0)==48){e=Ul(b,d)|0;if(e>>>0<4294967294)bm(y,e&255)|0;if((e+-48|0)>>>0<10){if((e|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0}else s=108}else s=96;f:do if((s|0)==96){if((e+-48|0)>>>0<10)while(1){e=Ul(b,d)|0;if(e>>>0<4294967294)bm(y,e&255)|0;if((e+-48|0)>>>0>=10){s=108;break f}}if(e>>>0<4294967294){if((e|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((e|0)!=10){if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0}}while(0);g:do if((s|0)==108){h:do if(!(c[b+52>>2]&8)){switch(e|0){case 46:{s=124;break h}case 101:case 69:break h;default:{}}if(e>>>0<4294967294){if((e|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((e|0)!=10){if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0}e=am(y)|0;D=eo()|0;c[D>>2]=0;e=to(e,z,10)|0;f=C;if((c[D>>2]|0)!=34){c[A>>2]=257;D=b+64|0;c[D>>2]=e;c[D+4>>2]=f;break g}if((f|0)<0){Ql(d,b,41993,g);break g}else{Ql(d,b,42018,k);break g}}else if((e|0)==46)s=124;while(0);i:do if((s|0)==124){e=Ul(b,d)|0;if((e+-48|0)>>>0<10){bm(y,e&255)|0;while(1){e=Ul(b,d)|0;if(e>>>0<4294967294)bm(y,e&255)|0;if((e+-48|0)>>>0>=10)break i}}if((e|1|0)==-1)break g;D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((e|0)!=10){if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1;break g}while(0);j:do if((e|32|0)==101){e=Ul(b,d)|0;if(e>>>0<4294967294)bm(y,e&255)|0;switch(e|0){case 43:case 45:{e=Ul(b,d)|0;if(e>>>0<4294967294)bm(y,e&255)|0;break}default:{}}if((e+-48|0)>>>0<10)while(1){e=Ul(b,d)|0;if(e>>>0<4294967294)bm(y,e&255)|0;if((e+-48|0)>>>0>=10)break j}if(e>>>0>=4294967294)break g;if((e|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((e|0)!=10){if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0;break g}while(0);if(e>>>0<4294967294){if((e|1|0)!=-1){D=b+36|0;c[D>>2]=(c[D>>2]|0)+-1;if((e|0)!=10){if(fm(e&255)|0){D=b+28|0;c[D>>2]=(c[D>>2]|0)+-1}}else{D=b+24|0;c[D>>2]=(c[D>>2]|0)+-1;c[b+28>>2]=c[b+32>>2]}D=b+16|0;c[D>>2]=(c[D>>2]|0)+-1}cm(y)|0}if(!(dm(y,q)|0)){c[A>>2]=258;h[b+64>>3]=+h[q>>3];break}else{Ql(d,b,42034,r);break}}while(0);i=B;return}}function Ul(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;if((i|0)>=(j|0))ba();n=o;l=b+20|0;e=c[l>>2]|0;if(e|0){b=e;i=o;return b|0}m=b+16|0;e=c[m>>2]|0;do if(!(a[b+8+e>>0]|0)){k=b+4|0;g=rb[c[b>>2]&7](c[k>>2]|0)|0;if((g|0)==-1){c[l>>2]=-1;b=-1;i=o;return b|0}e=g&255;h=b+8|0;a[h>>0]=e;c[m>>2]=0;if((g&-128|0)!=128){a[b+9>>0]=0;e=0;break}e=fm(e)|0;if(e|0){if(e>>>0>1){f=1;do{a[b+8+f>>0]=rb[c[b>>2]&7](c[k>>2]|0)|0;f=f+1|0}while((f|0)!=(e|0))}if(gm(h,e,0)|0){a[b+8+e>>0]=0;e=c[m>>2]|0;break}}c[l>>2]=-2;c[n>>2]=g;Ql(d,b,41800,n);b=-2;i=o;return b|0}while(0);c[m>>2]=e+1;e=a[b+8+e>>0]|0;f=e<<24>>24;n=b+36|0;c[n>>2]=(c[n>>2]|0)+1;if(e<<24>>24==10){n=b+24|0;c[n>>2]=(c[n>>2]|0)+1;n=b+28|0;c[b+32>>2]=c[n>>2];c[n>>2]=0;b=f;i=o;return b|0}if(!(fm(e)|0)){b=f;i=o;return b|0}b=b+28|0;c[b>>2]=(c[b>>2]|0)+1;b=f;i=o;return b|0}function Vl(b){b=b|0;var c=0,d=0,e=0,f=0;c=a[b+1>>0]|0;d=c<<24>>24;do if((c+-48&255)>=10){if((c+-97&255)<26){c=d+-87|0;break}if((c+-65&255)<26){c=d+-55|0;break}else{b=-1;return b|0}}else c=d+-48|0;while(0);d=a[b+2>>0]|0;e=c<<4;c=d<<24>>24;do if((d+-48&255)>=10){if((d+-97&255)<26){c=c+-87|0;break}if((d+-65&255)<26){c=c+-55|0;break}else{b=-1;return b|0}}else c=c+-48|0;while(0);d=a[b+3>>0]|0;f=c+e<<4;c=d<<24>>24;do if((d+-48&255)>=10){if((d+-97&255)<26){c=c+-87|0;break}if((d+-65&255)<26){c=c+-55|0;break}else{b=-1;return b|0}}else c=c+-48|0;while(0);e=a[b+4>>0]|0;d=c+f<<4;c=e<<24>>24;do if((e+-48&255)>=10){if((e+-97&255)<26){c=c+-87|0;break}if((e+-65&255)<26){c=c+-55|0;break}else{b=-1;return b|0}}else c=c+-48|0;while(0);b=c+d|0;return b|0}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i;i=i+80|0;if((i|0)>=(j|0))ba();f=w+72|0;e=w+64|0;m=w+56|0;p=w+48|0;r=w+40|0;n=w+32|0;q=w+24|0;o=w+16|0;l=w+8|0;v=a+56|0;t=(c[v>>2]|0)+1|0;c[v>>2]=t;if(t>>>0>2048){Ql(d,a,42091,w);a=0;i=w;return a|0}s=a+60|0;a:do switch(c[s>>2]|0){case 256:{g=a+64|0;e=c[g>>2]|0;k=g+4|0;f=c[k>>2]|0;if((b&16|0)==0?No(e,0,f)|0:0){Ql(d,a,42121,l);a=0;i=w;return a|0}e=nm(e,f)|0;if(!e){a=0;i=w;return a|0}else{c[g>>2]=0;c[k>>2]=0;break a}}case 257:{e=a+64|0;e=pm(c[e>>2]|0,c[e+4>>2]|0)|0;u=72;break}case 258:{e=rm(+h[a+64>>3])|0;u=72;break}case 259:{e=tm()|0;u=72;break}case 260:{e=um()|0;u=72;break}case 261:{e=vm()|0;u=72;break}case 123:{t=hm()|0;if(!t){a=0;i=w;return a|0}Tl(a,d);b:do switch(c[s>>2]|0){case 125:{e=t;break a}case 256:{l=a+64|0;m=l+4|0;c:do if(b&1){while(1){e=c[l>>2]|0;f=c[m>>2]|0;c[l>>2]=0;c[m>>2]=0;if(!e){e=0;u=74;break}if(No(e,0,f)|0){u=33;break c}if(im(t,e)|0){u=35;break}Tl(a,d);if((c[s>>2]|0)!=58){u=37;break c}Tl(a,d);g=Wl(a,b,d)|0;if(!g){u=39;break c}k=g+4|0;f=c[k>>2]|0;if((f|0)!=-1)c[k>>2]=f+1;if(jm(t,e,g)|0){u=43;break c}f=c[k>>2]|0;if((f|0)!=-1?(u=f+-1|0,c[k>>2]=u,(u|0)==0):0)km(g);Yl(e);Tl(a,d);e=c[s>>2]|0;if((e|0)!=44){u=50;break c}Tl(a,d);if((c[s>>2]|0)!=256){u=30;break b}}if((u|0)==35){Yl(e);Ql(d,a,42226,n);break b}else if((u|0)==74){i=w;return e|0}}else{while(1){e=c[l>>2]|0;f=c[m>>2]|0;c[l>>2]=0;c[m>>2]=0;if(!e){e=0;break}if(No(e,0,f)|0){u=33;break c}Tl(a,d);if((c[s>>2]|0)!=58){u=37;break c}Tl(a,d);g=Wl(a,b,d)|0;if(!g){u=39;break c}k=g+4|0;f=c[k>>2]|0;if((f|0)!=-1)c[k>>2]=f+1;if(jm(t,e,g)|0){u=43;break c}f=c[k>>2]|0;if((f|0)!=-1?(u=f+-1|0,c[k>>2]=u,(u|0)==0):0)km(g);Yl(e);Tl(a,d);e=c[s>>2]|0;if((e|0)!=44){u=50;break c}Tl(a,d);if((c[s>>2]|0)!=256){u=30;break b}}i=w;return e|0}while(0);if((u|0)==33){Yl(e);Ql(d,a,42189,q);break b}else if((u|0)==37){Yl(e);Ql(d,a,42247,r);break b}else if((u|0)==39){Yl(e);break b}else if((u|0)==43){Yl(e);e=g+4|0;f=c[e>>2]|0;if((f|0)==-1)break b;a=f+-1|0;c[e>>2]=a;if(a|0)break b;km(g);break b}else if((u|0)==50){if((e|0)==125){e=t;u=72;break a}Ql(d,a,42260,p);break b}break}default:u=30}while(0);if((u|0)==30)Ql(d,a,42166,o);e=t+4|0;f=c[e>>2]|0;if((f|0)==-1){a=0;i=w;return a|0}a=f+-1|0;c[e>>2]=a;if(a|0){a=0;i=w;return a|0}km(t);a=0;i=w;return a|0}case 91:{l=lm()|0;if(!l){a=0;i=w;return a|0}Tl(a,d);d:do switch(c[s>>2]|0){case 93:{e=l;break a}case 0:{u=66;break}default:while(1){k=Wl(a,b,d)|0;if(!k)break d;g=k+4|0;e=c[g>>2]|0;if((e|0)!=-1)c[g>>2]=e+1;e=(mm(l,k)|0)==0;f=c[g>>2]|0;if((f|0)!=-1?(t=f+-1|0,c[g>>2]=t,(t|0)==0):0)km(k);if(!e)break d;Tl(a,d);switch(c[s>>2]|0){case 93:{e=l;u=72;break a}case 44:break;default:{u=66;break d}}Tl(a,d);if(!(c[s>>2]|0)){u=66;break d}}}while(0);if((u|0)==66)Ql(d,a,42273,m);e=l+4|0;f=c[e>>2]|0;if((f|0)==-1){a=0;i=w;return a|0}a=f+-1|0;c[e>>2]=a;if(a|0){a=0;i=w;return a|0}km(l);a=0;i=w;return a|0}case -1:{Ql(d,a,42286,e);a=0;i=w;return a|0}default:{Ql(d,a,42300,f);a=0;i=w;return a|0}}while(0);if((u|0)==72)if(!e){a=0;i=w;return a|0}c[v>>2]=(c[v>>2]|0)+-1;a=e;i=w;return a|0}function Xl(a){a=a|0;if(!a){a=0;return a|0}a=rb[c[2340]&7](a)|0;return a|0}function Yl(a){a=a|0;if(!a)return;qb[c[2341]&31](a);return}function Zl(b){b=b|0;var d=0;c[b+8>>2]=16;c[b+4>>2]=0;d=Xl(16)|0;c[b>>2]=d;if(!d){b=-1;return b|0}a[d>>0]=0;b=0;return b|0}function _l(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)Yl(b);c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=0;return}function $l(b){b=b|0;c[b+4>>2]=0;a[c[b>>2]>>0]=0;return}function am(a){a=a|0;return c[a>>2]|0}function bm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=b+8|0;f=c[g>>2]|0;h=b+4|0;e=c[h>>2]|0;do if((f-e|0)>>>0<=1){if((f|0)<0|e>>>0>4294967293){d=-1;return d|0}f=f<<1;e=e+2|0;e=f>>>0>e>>>0?f:e;f=Xl(e)|0;if(!f){d=-1;return d|0}else{fq(f|0,c[b>>2]|0,c[h>>2]|0)|0;Yl(c[b>>2]|0);c[b>>2]=f;c[g>>2]=e;g=b;e=c[h>>2]|0;break}}else{g=b;f=c[b>>2]|0}while(0);a[f+e>>0]=d;d=(c[h>>2]|0)+1|0;c[h>>2]=d;a[(c[g>>2]|0)+d>>0]=0;d=0;return d|0}function cm(b){b=b|0;var d=0,e=0;d=b+4|0;e=c[d>>2]|0;if(!e){b=0;return b|0}e=e+-1|0;c[d>>2]=e;e=(c[b>>2]|0)+e|0;b=a[e>>0]|0;a[e>>0]=0;return b|0}function dm(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0,k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;f=a[c[(op()|0)>>2]>>0]|0;if(f<<24>>24!=46?(g=Bp(c[b>>2]|0,46)|0,g|0):0)a[g>>0]=f;g=eo()|0;c[g>>2]=0;e=+Tp(c[b>>2]|0,k);if(e==s|e==-s?(c[g>>2]|0)==34:0){d=-1;i=l;return d|0}h[d>>3]=e;d=0;i=l;return d|0}function em(b,d,e){b=b|0;d=d|0;e=e|0;if((b|0)<0){e=-1;return e|0}if((b|0)<128){a[d>>0]=b;c[e>>2]=1;e=0;return e|0}if((b|0)<2048){a[d>>0]=b>>>6&31|192;a[d+1>>0]=b&63|128;c[e>>2]=2;e=0;return e|0}if((b|0)<65536){a[d>>0]=b>>>12&15|224;a[d+1>>0]=b>>>6&63|128;a[d+2>>0]=b&63|128;c[e>>2]=3;e=0;return e|0}if((b|0)>=1114112){e=-1;return e|0}a[d>>0]=b>>>18&7|240;a[d+1>>0]=b>>>12&63|128;a[d+2>>0]=b>>>6&63|128;a[d+3>>0]=b&63|128;c[e>>2]=4;e=0;return e|0}function fm(a){a=a|0;if(a<<24>>24>-1){a=1;return a|0}if((a&255)<192|(a&-2)<<24>>24==-64){a=0;return a|0}if((a+62&255)<30){a=2;return a|0}if((a&-16)<<24>>24==-32){a=3;return a|0}else return ((a+16&255)<5?4:0)|0;return 0}function gm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a[b>>0]|0;j=(d|0)==2;a:do if(j){i=1;f=f&31}else switch(d|0){case 3:{i=1;f=f&15;break a}case 4:{i=1;f=f&7;break a}default:{k=0;return k|0}}while(0);do{h=a[b+i>>0]|0;if(h<<24>>24>-1|(h&255)>191){f=0;k=13;break}g=f<<6;f=h&63|g;i=i+1|0}while(i>>>0>>0);if((k|0)==13)return f|0;if(j&(f|0)<128|((f|0)>1114111|(g&-2048|0)==55296)){k=0;return k|0}if((d|0)==3&(f|0)<2048){k=0;return k|0}if((d|0)==4&(f|0)<65536){k=0;return k|0}if(!e){k=1;return k|0}c[e>>2]=f;k=1;return k|0}function hm(){var a=0;a=Xl(40)|0;if(!a){a=0;return a|0}if(!(c[11305]|0))Dm(0);c[a>>2]=0;c[a+4>>2]=1;if(!(ym(a+8|0)|0)){c[a+36>>2]=0;return a|0}else{Yl(a);a=0;return a|0}return 0}function im(a,b){a=a|0;b=b|0;if(!((a|0)!=0&(b|0)!=0)){b=0;return b|0}if(c[a>>2]|0){b=0;return b|0}b=Cm(a+8|0,b)|0;return b|0}function jm(a,b,d){a=a|0;b=b|0;d=d|0;if(!d){d=-1;return d|0}if((a|0)!=0&(b|0)!=0?!((a|0)==(d|0)|(c[a>>2]|0)!=0):0){if(!(Am(a+8|0,b,d)|0)){d=0;return d|0}a=d+4|0;b=c[a>>2]|0;if((b|0)==-1){d=-1;return d|0}b=b+-1|0;c[a>>2]=b;if(b|0){d=-1;return d|0}km(d);d=-1;return d|0}a=d+4|0;b=c[a>>2]|0;if((b|0)==-1){d=-1;return d|0}b=b+-1|0;c[a>>2]=b;if(b|0){d=-1;return d|0}km(d);d=-1;return d|0}function km(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;switch(c[a>>2]|0){case 0:{zm(a+8|0);Yl(a);return}case 1:{h=a+12|0;b=c[h>>2]|0;i=a+16|0;if(b|0){e=0;do{d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(((d|0)!=0?(f=d+4|0,g=c[f>>2]|0,(g|0)!=-1):0)?(j=g+-1|0,c[f>>2]=j,(j|0)==0):0){km(d);b=c[h>>2]|0}e=e+1|0}while(e>>>0>>0)}Yl(c[i>>2]|0);Yl(a);return}case 2:{Yl(c[a+8>>2]|0);Yl(a);return}case 3:{Yl(a);return}case 4:{Yl(a);return}default:return}}function lm(){var a=0,b=0;a=Xl(24)|0;if(!a){a=0;return a|0}c[a>>2]=1;c[a+4>>2]=1;c[a+12>>2]=0;c[a+8>>2]=8;b=Xl(32)|0;c[a+16>>2]=b;if(!b){Yl(a);b=0;return b|0}else{c[a+20>>2]=0;b=a;return b|0}return 0}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!b){b=-1;return b|0}if(a|0?!((a|0)==(b|0)|(c[a>>2]|0)!=1):0){g=a+12|0;h=a+8|0;d=c[h>>2]|0;e=a+16|0;f=c[e>>2]|0;if(((c[g>>2]|0)+1|0)>>>0>d>>>0){k=d+1|0;a=d<<1;a=k>>>0>a>>>0?k:a;d=Xl(a<<2)|0;if(d|0){c[h>>2]=a;c[e>>2]=d;fq(d|0,f|0,c[g>>2]<<2|0)|0;Yl(f);i=c[e>>2]|0;j=10}}else{i=f;j=10}if((j|0)==10?i|0:0){k=c[g>>2]|0;c[i+(k<<2)>>2]=b;c[g>>2]=k+1;k=0;return k|0}a=b+4|0;d=c[a>>2]|0;if((d|0)==-1){k=-1;return k|0}k=d+-1|0;c[a>>2]=k;if(k|0){k=-1;return k|0}km(b);k=-1;return k|0}a=b+4|0;d=c[a>>2]|0;if((d|0)==-1){k=-1;return k|0}k=d+-1|0;c[a>>2]=k;if(k|0){k=-1;return k|0}km(b);k=-1;return k|0}function nm(a,b){a=a|0;b=b|0;var d=0;if(!a){a=0;return a|0}d=Xl(16)|0;if(!d){a=0;return a|0}c[d>>2]=2;c[d+4>>2]=1;c[d+8>>2]=a;c[d+12>>2]=b;a=d;return a|0}function om(a){a=a|0;if((a|0)!=0?(c[a>>2]|0)==2:0)a=c[a+8>>2]|0;else a=0;return a|0}function pm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Xl(16)|0;if(!d){d=0;return d|0}c[d>>2]=3;c[d+4>>2]=1;e=d+8|0;c[e>>2]=a;c[e+4>>2]=b;return d|0}function qm(a){a=a|0;var b=0;if((a|0)!=0?(c[a>>2]|0)==3:0){b=a+8|0;a=c[b+4>>2]|0;b=c[b>>2]|0}else{a=0;b=0}C=a;return b|0}function rm(a){a=+a;var b=0,d=0.0;d=+N(+a);h[k>>3]=d;b=c[k+4>>2]|0;if(b>>>0>2146435071|(b|0)==2146435071&(c[k>>2]|0)>>>0>4294967295){b=0;return b|0}b=Xl(16)|0;if(!b){b=0;return b|0}c[b>>2]=4;c[b+4>>2]=1;h[b+8>>3]=a;return b|0}function sm(a){a=a|0;var b=0.0;if(!a){b=0.0;return +b}switch(c[a>>2]|0){case 3:{a=a+8|0;b=+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0);return +b}case 4:{b=+h[a+8>>3];return +b}default:{b=0.0;return +b}}return 0.0}function tm(){return 9368}function um(){return 9376}function vm(){return 9384}function wm(b,d){b=b|0;d=d|0;var e=0,f=0;if(!b)return;a[b+92>>0]=0;c[b>>2]=-1;c[b+4>>2]=-1;c[b+8>>2]=0;if(!d){a[b+12>>0]=0;return}e=np(d)|0;if(e>>>0<80){Lp(b+12|0,d,e+1|0)|0;return}else{f=b+12|0;a[f>>0]=a[42338]|0;a[f+1>>0]=a[42339]|0;a[f+2>>0]=a[42340]|0;Lp(b+15|0,d+(e+-76)|0,77)|0;return}}function xm(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var k=0,l=0;l=i;i=i+16|0;if((i|0)>=(j|0))ba();k=l;c[k>>2]=h;if(!b){i=l;return}h=b+92|0;if(a[h>>0]|0){i=l;return}c[b>>2]=d;c[b+4>>2]=e;c[b+8>>2]=f;Qo(h,160,g,k)|0;a[b+251>>0]=0;i=l;return}function ym(a){a=a|0;var b=0,d=0,e=0,f=0;c[a>>2]=0;b=a+8|0;c[b>>2]=3;d=Xl(64)|0;c[a+4>>2]=d;if(!d){e=-1;return e|0}e=a+12|0;c[a+16>>2]=e;c[e>>2]=e;f=a+20|0;c[a+24>>2]=f;c[f>>2]=f;b=1<>2];a=0;do{c[d+(a<<3)+4>>2]=e;c[d+(a<<3)>>2]=e;a=a+1|0}while(a>>>0>>0);b=0;return b|0}function zm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+12|0;b=c[a+16>>2]|0;if((b|0)==(f|0)){a=a+4|0;a=c[a>>2]|0;Yl(a);return}do{e=b;b=c[b+4>>2]|0;d=c[e+20>>2]|0;if((d|0?(h=d+4|0,g=c[h>>2]|0,(g|0)!=-1):0)?(i=g+-1|0,c[h>>2]=i,(i|0)==0):0)km(d);Yl(e)}while((b|0)!=(f|0));i=a+4|0;i=c[i>>2]|0;Yl(i);return}function Am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=a+8|0;e=c[g>>2]|0;if((c[a>>2]|0)>>>0>=1<>>0){e=e+1|0;h=1<>2]|0);c[i>>2]=f;c[g>>2]=e;n=a+12|0;g=0;do{c[f+(g<<3)+4>>2]=n;c[f+(g<<3)>>2]=n;g=g+1|0}while(g>>>0>>0);m=a+16|0;g=c[m>>2]|0;c[m>>2]=n;c[n>>2]=n;if((g|0)!=(n|0)){m=h+-1|0;f=c[i>>2]|0;do{h=g+4|0;l=g;g=c[h>>2]|0;i=c[l+16>>2]&m;j=f+(i<<3)|0;k=c[j>>2]|0;if((k|0)==(n|0)?(o=f+(i<<3)+4|0,(n|0)==(c[o>>2]|0)):0){c[h>>2]=n;c[l>>2]=c[n>>2];c[(c[n>>2]|0)+4>>2]=l;c[n>>2]=l;c[o>>2]=l}else{c[h>>2]=k;c[l>>2]=c[k>>2];c[(c[k>>2]|0)+4>>2]=l;c[k>>2]=l}c[j>>2]=l}while((g|0)!=(n|0))}}else{n=a+12|0;f=c[a+4>>2]|0}g=np(b)|0;g=Bm(b,g,c[11305]|0)|0;j=(1<>2]|0;j=f+(j<<3)+4|0;if(!((e|0)==(n|0)?(n|0)==(c[j>>2]|0):0))p=15;a:do if((p|0)==15){while(1){if((c[e+16>>2]|0)==(g|0)?(dp(e+24|0,b)|0)==0:0)break;if((e|0)==(c[j>>2]|0))break a;e=c[e+4>>2]|0;p=15}if(e|0){e=e+20|0;f=c[e>>2]|0;if((f|0?(q=f+4|0,r=c[q>>2]|0,(r|0)!=-1):0)?(a=r+-1|0,c[q>>2]=a,(a|0)==0):0)km(f);c[e>>2]=d;a=0;return a|0}}while(0);e=np(b)|0;if(e>>>0>4294967270){a=-1;return a|0}i=Xl(e+25|0)|0;if(!i){a=-1;return a|0}c[i+16>>2]=g;Lp(i+24|0,b,e+1|0)|0;c[i+20>>2]=d;e=i+4|0;c[e>>2]=i;c[i>>2]=i;f=i+8|0;g=i+12|0;c[g>>2]=f;c[f>>2]=f;h=c[k>>2]|0;if((h|0)==(n|0)?(n|0)==(c[j>>2]|0):0){c[e>>2]=n;c[i>>2]=c[n>>2];c[(c[a+12>>2]|0)+4>>2]=i;c[n>>2]=i;c[j>>2]=i}else{c[e>>2]=h;c[i>>2]=c[h>>2];c[(c[h>>2]|0)+4>>2]=i;c[h>>2]=i}c[k>>2]=i;d=a+20|0;c[g>>2]=d;c[f>>2]=c[d>>2];c[(c[d>>2]|0)+4>>2]=f;c[d>>2]=f;c[a>>2]=(c[a>>2]|0)+1;a=0;return a|0} -function Bm(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,i=0,j=0;i=b+-559038737+f|0;f=a;a:do if(f&3)if(!(f&1)){if(b>>>0>12){g=i;h=i;f=i;do{h=((e[a+6>>1]|0)<<16|(e[a+4>>1]|0))+h|0;f=((e[a+10>>1]|0)<<16|(e[a+8>>1]|0))+f|0;g=(f<<4|f>>>28)^((e[a+2>>1]|0)<<16|(e[a>>1]|0))+g-f;f=f+h|0;h=(g<<6|g>>>26)^h-g;g=g+f|0;f=(h<<8|h>>>24)^f-h;h=h+g|0;g=(f<<16|f>>>16)^g-f;f=f+h|0;h=(g<<19|g>>>13)^h-g;g=g+f|0;f=(h<<4|h>>>28)^f-h;h=h+g|0;b=b+-12|0;a=a+12|0}while(b>>>0>12)}else{g=i;h=i;f=i}switch(b|0){case 12:{g=((e[a+2>>1]|0)<<16|(e[a>>1]|0))+g|0;b=((e[a+6>>1]|0)<<16|(e[a+4>>1]|0))+h|0;f=((e[a+10>>1]|0)<<16|(e[a+8>>1]|0))+f|0;break a}case 11:{f=((d[a+10>>0]|0)<<16)+f|0;j=24;break}case 10:{j=24;break}case 9:{f=(d[a+8>>0]|0)+f|0;j=26;break}case 8:{j=26;break}case 7:{b=((d[a+6>>0]|0)<<16)+h|0;j=28;break}case 6:{b=h;j=28;break}case 5:{b=(d[a+4>>0]|0)+h|0;j=30;break}case 4:{b=h;j=30;break}case 3:{g=((d[a+2>>0]|0)<<16)+g|0;j=32;break}case 2:{j=32;break}case 1:{g=(d[a>>0]|0)+g|0;b=h;break a}case 0:{j=f;return j|0}default:{b=h;break a}}if((j|0)==24){g=((e[a+2>>1]|0)<<16|(e[a>>1]|0))+g|0;b=((e[a+6>>1]|0)<<16|(e[a+4>>1]|0))+h|0;f=(e[a+8>>1]|0)+f|0;break}else if((j|0)==26){g=((e[a+2>>1]|0)<<16|(e[a>>1]|0))+g|0;b=((e[a+6>>1]|0)<<16|(e[a+4>>1]|0))+h|0;break}else if((j|0)==28){g=((e[a+2>>1]|0)<<16|(e[a>>1]|0))+g|0;b=(e[a+4>>1]|0)+b|0;break}else if((j|0)==30){g=((e[a+2>>1]|0)<<16|(e[a>>1]|0))+g|0;break}else if((j|0)==32){g=(e[a>>1]|0)+g|0;b=h;break}}else{if(b>>>0>12){g=i;h=i;f=i;do{h=(d[a+4>>0]|0)+h+((d[a+5>>0]|0)<<8)+((d[a+6>>0]|0)<<16)+((d[a+7>>0]|0)<<24)|0;f=(d[a+8>>0]|0)+f+((d[a+9>>0]|0)<<8)+((d[a+10>>0]|0)<<16)+((d[a+11>>0]|0)<<24)|0;g=(f<<4|f>>>28)^(d[a>>0]|0)+g+((d[a+1>>0]|0)<<8)+((d[a+2>>0]|0)<<16)+((d[a+3>>0]|0)<<24)-f;f=f+h|0;h=(g<<6|g>>>26)^h-g;g=g+f|0;f=(h<<8|h>>>24)^f-h;h=h+g|0;g=(f<<16|f>>>16)^g-f;f=f+h|0;h=(g<<19|g>>>13)^h-g;g=g+f|0;f=(h<<4|h>>>28)^f-h;h=h+g|0;b=b+-12|0;a=a+12|0}while(b>>>0>12)}else{g=i;h=i;f=i}switch(b|0){case 12:{f=((d[a+11>>0]|0)<<24)+f|0;j=37;break}case 11:{j=37;break}case 10:{j=38;break}case 9:{j=39;break}case 8:{j=40;break}case 7:{b=h;j=41;break}case 6:{b=h;j=42;break}case 5:{b=h;j=43;break}case 4:{b=h;j=44;break}case 3:{b=h;j=45;break}case 2:{b=h;j=46;break}case 1:{b=h;break}case 0:{j=f;return j|0}default:{b=h;break a}}if((j|0)==37){f=((d[a+10>>0]|0)<<16)+f|0;j=38}if((j|0)==38){f=((d[a+9>>0]|0)<<8)+f|0;j=39}if((j|0)==39){f=(d[a+8>>0]|0)+f|0;j=40}if((j|0)==40){b=((d[a+7>>0]|0)<<24)+h|0;j=41}if((j|0)==41){b=((d[a+6>>0]|0)<<16)+b|0;j=42}if((j|0)==42){b=((d[a+5>>0]|0)<<8)+b|0;j=43}if((j|0)==43){b=(d[a+4>>0]|0)+b|0;j=44}if((j|0)==44){g=((d[a+3>>0]|0)<<24)+g|0;j=45}if((j|0)==45){g=((d[a+2>>0]|0)<<16)+g|0;j=46}if((j|0)==46)g=((d[a+1>>0]|0)<<8)+g|0;g=(d[a>>0]|0)+g|0;break}else{if(b>>>0>12){g=i;h=i;f=i;do{h=(c[a+4>>2]|0)+h|0;f=(c[a+8>>2]|0)+f|0;g=(f<<4|f>>>28)^(c[a>>2]|0)+g-f;f=f+h|0;h=(g<<6|g>>>26)^h-g;g=g+f|0;f=(h<<8|h>>>24)^f-h;h=h+g|0;g=(f<<16|f>>>16)^g-f;f=f+h|0;h=(g<<19|g>>>13)^h-g;g=g+f|0;f=(h<<4|h>>>28)^f-h;h=h+g|0;b=b+-12|0;a=a+12|0}while(b>>>0>12)}else{g=i;h=i;f=i}do switch(b|0){case 12:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]|0)+h|0;f=(c[a+8>>2]|0)+f|0;break a}case 11:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]|0)+h|0;f=(c[a+8>>2]&16777215)+f|0;break a}case 10:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]|0)+h|0;f=(c[a+8>>2]&65535)+f|0;break a}case 9:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]|0)+h|0;f=(c[a+8>>2]&255)+f|0;break a}case 8:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]|0)+h|0;break a}case 7:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]&16777215)+h|0;break a}case 6:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]&65535)+h|0;break a}case 5:{g=(c[a>>2]|0)+g|0;b=(c[a+4>>2]&255)+h|0;break a}case 4:{g=(c[a>>2]|0)+g|0;b=h;break a}case 3:{g=(c[a>>2]&16777215)+g|0;b=h;break a}case 2:{g=(c[a>>2]&65535)+g|0;b=h;break a}case 1:{g=(c[a>>2]&255)+g|0;b=h;break a}case 0:{j=f;return j|0}default:{b=h;break a}}while(0)}while(0);i=(f^b)-(b<<14|b>>>18)|0;j=(i^g)-(i<<11|i>>>21)|0;h=(j^b)-(j<<25|j>>>7)|0;i=(h^i)-(h<<16|h>>>16)|0;j=(i^j)-(i<<4|i>>>28)|0;j=(j^h)-(j<<14|j>>>18)|0;j=(j^i)-(j<<24|j>>>8)|0;return j|0}function Cm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=np(b)|0;f=Bm(b,f,c[11305]|0)|0;e=(1<>2])+-1&f;h=c[a+4>>2]|0;d=c[h+(e<<3)>>2]|0;e=h+(e<<3)+4|0;if((d|0)==(a+12|0)?(d|0)==(c[e>>2]|0):0){h=0;return h|0}while(1){if((c[d+16>>2]|0)==(f|0)?(dp(d+24|0,b)|0)==0:0)break;if((d|0)==(c[e>>2]|0)){d=0;g=9;break}d=c[d+4>>2]|0}if((g|0)==9)return d|0;if(!d){h=0;return h|0}h=c[d+20>>2]|0;return h|0}function Dm(b){b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;if((i|0)>=(j|0))ba();f=g;e=g+8|0;if(c[11305]|0){i=g;return}h=a[45768]|0;a[45768]=1;if(h<<24>>24){do Ba()|0;while(!(c[11305]|0));i=g;return}if(!b){b=fp(42342,0,f)|0;if((b|0)!=-1?(h=(Wp(b,e,4)|0)==4,ep(b)|0,h):0)b=((d[e+1>>0]|0|(d[e>>0]|0)<<8)<<8|(d[e+2>>0]|0))<<8|(d[e+3>>0]|0);else{hb(f|0,0)|0;b=c[f+4>>2]^c[f>>2];b=b^(Dp()|0)}b=(b|0)==0?1:b}c[11305]=b;i=g;return}function Em(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((a|0)!=8){a=0;return a|0}a=Xp(28)|0;c[a+20>>2]=g;g=255-g|0;c[a+8>>2]=g;c[a+12>>2]=f;c[a+4>>2]=g-f;c[a>>2]=Fm(b&65535,d&255,e&255,f)|0;c[a+16>>2]=Xp(g)|0;c[a+24>>2]=Xp(f)|0;return a|0}function Fm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+48|0;if((i|0)>=(j|0))ba();s=t+32|0;r=t+24|0;m=t+16|0;n=t+8|0;o=t;p=Zp(1,156)|0;q=Xp(512)|0;k=Xp(256)|0;a[q>>0]=1;a[k>>0]=0;b=b&65535;g=1;h=1;do{l=g<<1&65534;g=(l>>>0>255?b:0)^l;a[q+h>>0]=g;if(h>>>0<256)a[k+g>>0]=h;h=h+1|0}while((h|0)!=512);g=k;c[p+16>>2]=q;c[p+20>>2]=g;c[p>>2]=255;c[p+8>>2]=f;c[p+4>>2]=255-f;a[p+12>>0]=d;a[p+13>>0]=e;k=Xp(f)|0;c[p+32>>2]=k;l=p+24|0;h=e&255;c[r>>2]=q;c[r+4>>2]=g;if(f|0){b=d&255;g=0;do{a[k+g>>0]=a[q+(((_(g+b|0,h)|0)>>>0)%255|0)>>0]|0;g=g+1|0}while((g|0)!=(f|0))};c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];Gm(m,s,f,k);r=m;s=c[r+4>>2]|0;f=l;c[f>>2]=c[r>>2];c[f+4>>2]=s;Hm(n,254);f=n;s=c[f+4>>2]|0;r=p+40|0;c[r>>2]=c[f>>2];c[r+4>>2]=s;Hm(o,254);r=o;s=c[r+4>>2]|0;f=p+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=s;i=t;return p|0}function Gm(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+16|0;if((i|0)>=(j|0))ba();w=C;x=f+1|0;y=Xp(x)|0;z=y;A=Zp(x,1)|0;c[w>>2]=A;B=Zp(x,1)|0;c[w+8>>2]=B;a[A>>0]=a[g>>0]|0;a[A+1>>0]=1;c[w+4>>2]=1;if(f>>>0<=1){g=A;fq(y|0,g|0,x|0)|0;Yp(A);Yp(B);c[b>>2]=z;b=b+4|0;c[b>>2]=f;i=C;return}v=c[e>>2]|0;q=c[e+4>>2]|0;r=q+1|0;s=A;t=1;u=0;while(1){m=a[g+t>>0]|0;o=u;u=u&1^1;p=t;t=t+1|0;c[w+(u<<3)+4>>2]=t;e=c[w+(u<<3)>>2]|0;o=c[w+(o<<3)+4>>2]|0;eq(e|0,0,p+2|0)|0;n=o>>>0>t>>>0?t:o;k=q+(m&255)|0;if(!(m<<24>>24)){h=0;do h=h+1|0;while(h>>>0<=n>>>0)}else{m=0;do{l=e+m|0;h=a[s+m>>0]|0;if(!(h<<24>>24))h=0;else h=a[v+((d[q+(h&255)>>0]|0)+(d[k>>0]|0))>>0]|0;a[l>>0]=h^a[l>>0];m=m+1|0}while(m>>>0<=n>>>0)}k=o>>>0>p>>>0?p:o;m=0;do{h=m;m=m+1|0;l=e+m|0;h=a[s+h>>0]|0;if(!(h<<24>>24))h=0;else h=a[v+((d[q+(h&255)>>0]|0)+(d[r>>0]|0))>>0]|0;a[l>>0]=h^a[l>>0]}while(m>>>0<=k>>>0);if((t|0)==(f|0))break;else s=e}fq(y|0,e|0,x|0)|0;Yp(A);Yp(B);c[b>>2]=z;b=b+4|0;c[b>>2]=f;i=C;return}function Hm(a,b){a=a|0;b=b|0;c[a>>2]=Xp(b+1|0)|0;c[a+4>>2]=b;return}function Im(a){a=a|0;Jm(c[a>>2]|0);Yp(c[a+16>>2]|0);Yp(c[a+24>>2]|0);Yp(a);return}function Jm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;if((i|0)>=(j|0))ba();g=h;f=c[b+20>>2]|0;Yp(c[b+16>>2]|0);Yp(f);f=b+24|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];Km(g);Yp(c[b+32>>2]|0);f=b+40|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];Km(g);f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];Km(g);if(!(a[b+152>>0]|0)){Yp(b);i=h;return}Yp(c[b+56>>2]|0);Yp(c[b+60>>2]|0);d=b+64|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);d=b+72|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);d=b+80|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);d=b+88|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);Yp(c[b+96>>2]|0);Yp(c[b+100>>2]|0);Yp(c[b+104>>2]|0);d=b+112|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);d=b+120|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);d=b+128|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];Km(g);d=b+8|0;e=b+36|0;if(c[d>>2]|0){f=0;do{Yp(c[(c[e>>2]|0)+(f<<2)>>2]|0);f=f+1|0}while(f>>>0<(c[d>>2]|0)>>>0)}Yp(c[e>>2]|0);d=b+108|0;e=0;do{Yp(c[(c[d>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while((e|0)!=256);Yp(c[d>>2]|0);f=b+136|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];Km(g);f=b+144|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];Km(g);Yp(b);i=h;return}function Km(a){a=a|0;Yp(c[a>>2]|0);return}function Lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+4|0;f=a+16|0;Mm(c[a>>2]|0,b,c[e>>2]|0,c[f>>2]|0)|0;fq(d|0,(c[f>>2]|0)+(c[e>>2]|0)|0,c[a+12>>2]|0)|0;return}function Mm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();p=s+24|0;o=s+16|0;n=s+8|0;m=s;k=b+4|0;g=c[k>>2]|0;if(g>>>0>>0){b=-1;i=s;return b|0}r=g-e|0;l=(e|0)==0;q=b+44|0;if(!l){g=b+40|0;h=0;do{a[(c[g>>2]|0)+((c[q>>2]|0)-(h+r))>>0]=a[d+h>>0]|0;h=h+1|0}while((h|0)!=(e|0))}h=b+40|0;eq((c[h>>2]|0)+(1-r+(c[q>>2]|0))|0,0,r|0)|0;eq(c[h>>2]|0,0,(c[q>>2]|0)+1-(c[k>>2]|0)|0)|0;g=b+16|0;d=b+24|0;k=b+48|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];Nm(m,n,o,p);if(!l){g=0;do{a[f+g>>0]=a[(c[h>>2]|0)+((c[q>>2]|0)-(g+r))>>0]|0;g=g+1|0}while((g|0)!=(e|0))}d=b+8|0;g=c[d>>2]|0;if(g|0){h=0;do{r=h;h=h+1|0;a[f+(r+e)>>0]=a[(c[k>>2]|0)+(g-h)>>0]|0;g=c[d>>2]|0}while(h>>>0>>0)}b=c[b>>2]|0;i=s;return b|0}function Nm(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=c[e+4>>2]|0;if((c[g+4>>2]|0)>>>0>>0)return;n=c[g>>2]|0;fq(n|0,c[e>>2]|0,h+1|0)|0;if(!h)return;l=c[b+4>>2]|0;m=c[f>>2]|0;j=c[f+4>>2]|0;k=(d[l+(d[m+j>>0]|0)>>0]|0)^255;i=c[b>>2]|0;while(1){if(h>>>0>>0){g=11;break}g=a[n+h>>0]|0;if(g<<24>>24){b=h-j|0;g=k+(d[l+(g&255)>>0]|0)|0;g=(g>>>0>255&1)+g&255;f=0;do{e=a[m+f>>0]|0;if(e<<24>>24){o=n+(b+f)|0;a[o>>0]=a[i+((d[l+(e&255)>>0]|0)+g)>>0]^a[o>>0]}f=f+1|0}while(f>>>0<=j>>>0)}h=h+-1|0;if(!h){g=11;break}}if((g|0)==11)return}function Om(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;if((f|0)>0){h=b+20|0;g=b+24|0;i=0;do{a[(c[g>>2]|0)+i>>0]=(c[e+(i<<2)>>2]|0)-(c[h>>2]|0);i=i+1|0}while((i|0)!=(f|0))}else g=b+24|0;Pm(c[b>>2]|0,d,c[b+8>>2]|0,c[g>>2]|0,f,d)|0;return}function Pm(b,e,f,g,h,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=i;i=i+64|0;if((i|0)>=(j|0))ba();I=N+56|0;G=N+48|0;F=N+24|0;x=N+16|0;J=N;u=N+40|0;t=N+32|0;s=N+8|0;if(!h){k=Qm(b,e,f,k)|0;i=N;return k|0}n=c[b>>2]|0;if(n>>>0>>0){k=-1;i=N;return k|0}L=b+8|0;M=c[L>>2]|0;if(M>>>0>>0){k=-1;i=N;return k|0}l=f-M|0;p=n-f|0;if(!(a[b+152>>0]|0))Rm(b);if(f|0){m=b+64|0;o=0;do{K=o;o=o+1|0;a[(c[m>>2]|0)+K>>0]=a[e+(f-o)>>0]|0}while((o|0)!=(f|0))}if((n|0)!=(f|0)){m=b+64|0;n=0;do{a[(c[m>>2]|0)+(n+f)>>0]=0;n=n+1|0}while((n|0)!=(p|0))}m=p^255;K=b+104|0;n=0;do{a[(c[K>>2]|0)+n>>0]=(c[b>>2]|0)+m-(d[g+n>>0]|0);n=n+1|0}while((n|0)!=(h|0));w=b+16|0;E=b+13|0;o=c[K>>2]|0;B=b+96|0;p=c[B>>2]|0;n=c[w>>2]|0;C=b+20|0;e=c[C>>2]|0;g=d[E>>0]|0;q=e+1|0;r=0;do{m=a[n+(((_(d[e+(d[n+(d[o+r>>0]|0)>>0]|0)>>0]|0,g)|0)>>>0)%255|0)>>0]|0;if(!(m<<24>>24))m=0;else m=a[n+((d[q>>0]|0)+255-(d[e+(m&255)>>0]|0)&65535)>>0]|0;a[p+r>>0]=m;r=r+1|0}while((r|0)!=(h|0));q=b+88|0;D=c[B>>2]|0;H=c[w>>2]|0;m=c[C>>2]|0;g=b+92|0;n=c[g>>2]|0;c[F>>2]=c[q>>2];c[F+4>>2]=n;c[x>>2]=H;c[x+4>>2]=m;c[G>>2]=c[x>>2];c[G+4>>2]=c[x+4>>2];c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];Zm(s,G,h,D,I,b+136|0);D=s;m=c[D+4>>2]|0;H=q;c[H>>2]=c[D>>2];c[H+4>>2]=m;H=b+64|0;m=c[b+36>>2]|0;D=b+56|0;n=c[D>>2]|0;e=c[L>>2]|0;z=c[w>>2]|0;A=c[C>>2]|0;y=c[b+68>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=y;c[x>>2]=z;c[x+4>>2]=A;eq(n|0,0,e|0)|0;if(e){o=1;p=0;do{A=c[m+(p<<2)>>2]|0;c[G>>2]=c[x>>2];c[G+4>>2]=c[x+4>>2];c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];A=Tm(G,I,A)|0;o=o&A<<24>>24==0;a[n+p>>0]=A;p=p+1|0}while((p|0)!=(e|0));if(!o){m=c[D>>2]|0;n=b+60|0;z=c[n>>2]|0;A=c[g>>2]|0;c[J>>2]=c[q>>2];c[J+4>>2]=A;A=(c[L>>2]|0)+-1|0;c[u+4>>2]=A;c[u>>2]=m;c[t+4>>2]=A;c[t>>2]=z;c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[I>>2]=c[t>>2];c[I+4>>2]=c[t+4>>2];Xm(x,F,G,I);z=c[L>>2]|0;A=Xp(z)|0;m=c[D>>2]|0;fq(A|0,m|0,z|0)|0;if(z>>>0>h>>>0?(a[m>>0]=a[(c[n>>2]|0)+h>>0]|0,v=h+1|0,v>>>0<(c[L>>2]|0)>>>0):0){m=v;do{a[(c[D>>2]|0)+(m-h)>>0]=a[(c[n>>2]|0)+m>>0]|0;m=m+1|0}while(m>>>0<(c[L>>2]|0)>>>0)}y=b+72|0;z=b+76|0;c[z>>2]=Um(b,h)|0;n=b+80|0;e=0;do{a[(c[n>>2]|0)+e>>0]=a[(c[C>>2]|0)+(d[(c[y>>2]|0)+e>>0]|0)>>0]|0;e=e+1|0;m=c[z>>2]|0}while(e>>>0<=m>>>0);c[b+84>>2]=m;n=c[B>>2]|0;e=c[b+108>>2]|0;o=b+80|0;m=o;o=o+4|0;o=d[o>>0]|d[o+1>>0]<<8|d[o+2>>0]<<16|d[o+3>>0]<<24;p=F;c[p>>2]=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;c[p+4>>2]=o;p=w;m=p;p=p+4|0;p=d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24;g=x;c[g>>2]=d[m>>0]|d[m+1>>0]<<8|d[m+2>>0]<<16|d[m+3>>0]<<24;c[g+4>>2]=p;g=F+4|0;eq(n+h|0,0,o|0)|0;o=0;p=0;m=h;while(1){v=c[e+(p<<2)>>2]|0;c[G>>2]=c[x>>2];c[G+4>>2]=c[x+4>>2];c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];if(!((Vm(G,I,v)|0)<<24>>24)){a[n+m>>0]=o;m=m+1|0}p=p+1|0;if((p|0)==256)break;else o=o+1<<16>>16}if((m|0)!=((c[g>>2]|0)+h|0)){k=-1;i=N;return k|0}Hm(J,(c[z>>2]|0)+h|0);c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[F>>2]=c[q>>2];c[F+4>>2]=c[q+4>>2];c[G>>2]=c[y>>2];c[G+4>>2]=c[y+4>>2];c[I>>2]=c[J>>2];c[I+4>>2]=c[J+4>>2];Xm(x,F,G,I);x=y;w=c[x>>2]|0;x=c[x+4>>2]|0;t=J;v=c[t+4>>2]|0;s=y;c[s>>2]=c[t>>2];c[s+4>>2]=v;s=c[B>>2]|0;t=c[K>>2]|0;u=b+16|0;u=d[u>>0]|d[u+1>>0]<<8|d[u+2>>0]<<16|d[u+3>>0]<<24;q=d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24;if(v|0){r=q+1|0;p=d[E>>0]|0;g=0;do{m=a[s+g>>0]|0;a:do if(m<<24>>24){n=a[u+((d[r>>0]|0)+255-(d[q+(m&255)>>0]|0)&65535)>>0]|0;m=0;o=0;while(1){e=o+1<<16>>16;if((a[u+(((_(d[q+(o&255)>>0]|0,p)|0)>>>0)%255|0)>>0]|0)==n<<24>>24)break;if((e&65535)<256){m=e&65535;o=e}else break a}a[t+g>>0]=a[q+m>>0]|0}while(0);g=g+1|0}while((g|0)!=(v|0))}fq(c[D>>2]|0,A|0,c[L>>2]|0)|0;Wm(b);if(c[z>>2]|0){m=b+100|0;n=0;do{b=(c[H>>2]|0)+(d[(c[K>>2]|0)+n>>0]|0)|0;a[b>>0]=a[(c[m>>2]|0)+n>>0]^a[b>>0];n=n+1|0}while(n>>>0<(c[z>>2]|0)>>>0)}b=y;c[b>>2]=w;c[b+4>>2]=x;if((M|0)!=(f|0)){m=0;do{M=m;m=m+1|0;a[k+M>>0]=a[(c[H>>2]|0)+(f-m)>>0]|0}while((m|0)!=(l|0))}k=l;i=N;return k|0}}if((M|0)==(f|0)){k=l;i=N;return k|0}m=0;do{M=m;m=m+1|0;a[k+M>>0]=a[(c[H>>2]|0)+(f-m)>>0]|0}while((m|0)!=(l|0));i=N;return l|0}function Qm(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=i;i=i+32|0;if((i|0)>=(j|0))ba();t=A+24|0;u=A+16|0;r=A+8|0;s=A;m=c[b>>2]|0;if(m>>>0>>0){g=-1;i=A;return g|0}o=b+8|0;z=c[o>>2]|0;h=f-z|0;if(!(a[b+152>>0]|0))Rm(b);if(f|0){k=b+64|0;l=0;do{y=l;l=l+1|0;a[(c[k>>2]|0)+y>>0]=a[e+(f-l)>>0]|0}while((l|0)!=(f|0))}if((m|0)!=(f|0)){l=b+64|0;k=m-f|0;e=0;do{a[(c[l>>2]|0)+(e+f)>>0]=0;e=e+1|0}while((e|0)!=(k|0))}q=b+16|0;y=b+64|0;m=c[b+36>>2]|0;n=c[b+56>>2]|0;k=c[o>>2]|0;v=c[q>>2]|0;w=b+20|0;x=c[w>>2]|0;p=c[b+68>>2]|0;c[r>>2]=c[y>>2];c[r+4>>2]=p;c[s>>2]=v;c[s+4>>2]=x;eq(n|0,0,k|0)|0;if(k){e=1;l=0;do{x=c[m+(l<<2)>>2]|0;c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];x=Tm(u,t,x)|0;e=e&x<<24>>24==0;a[n+l>>0]=x;l=l+1|0}while((l|0)!=(k|0));if(!e){x=b+76|0;c[x>>2]=Um(b,0)|0;e=b+72|0;l=b+80|0;m=0;do{a[(c[l>>2]|0)+m>>0]=a[(c[w>>2]|0)+(d[(c[e>>2]|0)+m>>0]|0)>>0]|0;m=m+1|0;k=c[x>>2]|0}while(m>>>0<=k>>>0);c[b+84>>2]=k;p=b+96|0;m=c[p>>2]|0;n=c[b+108>>2]|0;e=b+80|0;k=e;e=e+4|0;e=d[e>>0]|d[e+1>>0]<<8|d[e+2>>0]<<16|d[e+3>>0]<<24;l=r;c[l>>2]=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;c[l+4>>2]=e;l=q;k=l;l=l+4|0;l=d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24;o=s;c[o>>2]=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;c[o+4>>2]=l;o=r+4|0;eq(m|0,0,e|0)|0;e=0;l=0;k=0;while(1){v=c[n+(l<<2)>>2]|0;c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];if(!((Vm(u,t,v)|0)<<24>>24)){a[m+k>>0]=e;k=k+1|0}l=l+1|0;if((l|0)==256)break;else e=e+1<<16>>16}if((k|0)!=(c[o>>2]|0)){g=-1;i=A;return g|0}u=c[p>>2]|0;v=b+104|0;r=c[v>>2]|0;s=c[x>>2]|0;t=b+16|0;t=d[t>>0]|d[t+1>>0]<<8|d[t+2>>0]<<16|d[t+3>>0]<<24;n=d[w>>0]|d[w+1>>0]<<8|d[w+2>>0]<<16|d[w+3>>0]<<24;if(s|0){o=n+1|0;p=d[b+13>>0]|0;q=0;do{k=a[u+q>>0]|0;a:do if(k<<24>>24){e=a[t+((d[o>>0]|0)+255-(d[n+(k&255)>>0]|0)&65535)>>0]|0;k=0;m=0;while(1){l=m+1<<16>>16;if((a[t+(((_(d[n+(m&255)>>0]|0,p)|0)>>>0)%255|0)>>0]|0)==e<<24>>24)break;if((l&65535)<256){k=l&65535;m=l}else break a}a[r+q>>0]=a[n+k>>0]|0}while(0);q=q+1|0}while((q|0)!=(s|0))}Wm(b);if(c[x>>2]|0){k=b+100|0;e=0;do{b=(c[y>>2]|0)+(d[(c[v>>2]|0)+e>>0]|0)|0;a[b>>0]=a[(c[k>>2]|0)+e>>0]^a[b>>0];e=e+1|0}while(e>>>0<(c[x>>2]|0)>>>0)}if((z|0)==(f|0)){g=h;i=A;return g|0}k=0;do{z=k;k=k+1|0;a[g+z>>0]=a[(c[y>>2]|0)+(f-k)>>0]|0}while((k|0)!=(h|0));i=A;return h|0}}if((z|0)==(f|0)){g=h;i=A;return g|0}k=0;do{z=k;k=k+1|0;a[g+z>>0]=a[(c[y>>2]|0)+(f-k)>>0]|0}while((k|0)!=(h|0));i=A;return h|0}function Rm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+80|0;if((i|0)>=(j|0))ba();l=p+72|0;s=p+64|0;r=p+56|0;q=p+48|0;e=p+40|0;g=p+32|0;h=p+24|0;f=p+16|0;n=p+8|0;o=p;a[b+152>>0]=1;m=b+8|0;d=c[m>>2]|0;c[b+56>>2]=Zp(d,1)|0;c[b+60>>2]=Zp(d<<1,1)|0;Hm(s,(c[b>>2]|0)+-1|0);d=c[s+4>>2]|0;k=b+64|0;c[k>>2]=c[s>>2];c[k+4>>2]=d;Hm(r,c[m>>2]|0);k=c[r+4>>2]|0;d=b+72|0;c[d>>2]=c[r>>2];c[d+4>>2]=k;Hm(q,c[m>>2]|0);d=c[q+4>>2]|0;k=b+80|0;c[k>>2]=c[q>>2];c[k+4>>2]=d;Hm(e,c[m>>2]|0);k=c[e+4>>2]|0;d=b+88|0;c[d>>2]=c[e>>2];c[d+4>>2]=k;d=c[m>>2]|0;c[b+96>>2]=Zp(d<<1,1)|0;c[b+100>>2]=Xp(d)|0;c[b+104>>2]=Xp(d)|0;Hm(g,d);d=c[g+4>>2]|0;k=b+112|0;c[k>>2]=c[g>>2];c[k+4>>2]=d;Hm(h,(c[m>>2]|0)+-1|0);k=c[h+4>>2]|0;d=b+120|0;c[d>>2]=c[h>>2];c[d+4>>2]=k;Hm(f,(c[m>>2]|0)+-1|0);d=c[f+4>>2]|0;k=b+128|0;c[k>>2]=c[f>>2];c[k+4>>2]=d;k=c[m>>2]|0;d=Xp(k<<2)|0;f=b+36|0;c[f>>2]=d;a:do if(!k){k=b+16|0;d=0}else{g=b+16|0;h=b+32|0;e=0;while(1){s=c[b>>2]|0;c[d+(e<<2)>>2]=Xp(s)|0;r=a[(c[h>>2]|0)+e>>0]|0;d=c[(c[f>>2]|0)+(e<<2)>>2]|0;c[l>>2]=c[g>>2];c[l+4>>2]=c[g+4>>2];Sm(l,r,s+-1|0,d);e=e+1|0;d=c[m>>2]|0;if(e>>>0>=d>>>0){k=g;break a}d=c[f>>2]|0}}while(0);f=Xp(1024)|0;h=b+108|0;c[h>>2]=f;g=0;e=0;while(1){c[f+(e<<2)>>2]=Xp(d)|0;s=c[(c[h>>2]|0)+(e<<2)>>2]|0;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];Sm(l,g&255,d+-1|0,s);e=e+1|0;if((e|0)==256)break;d=c[m>>2]|0;f=c[h>>2]|0;g=g+1<<16>>16}Hm(n,c[m>>2]|0);s=n;r=c[s+4>>2]|0;q=b+136|0;c[q>>2]=c[s>>2];c[q+4>>2]=r;Hm(o,c[m>>2]|0);q=o;r=c[q+4>>2]|0;s=b+144|0;c[s>>2]=c[q>>2];c[s+4>>2]=r;i=p;return}function Sm(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;b=c[b+4>>2]|0;h=d[b+(e&255)>>0]|0;if(!(e<<24>>24)){b=0;do{a[g+b>>0]=0;b=b+1|0}while(b>>>0<=f>>>0);return}e=0;b=a[b+1>>0]|0;while(1){a[g+e>>0]=b;b=(b&255)+h|0;e=e+1|0;if(e>>>0>f>>>0)break;else b=(b>>>0>255&1)+b&255}return}function Tm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;if(!(a[f>>0]|0)){f=a[c[e>>2]>>0]|0;return f|0}k=c[e>>2]|0;i=c[e+4>>2]|0;j=c[b+4>>2]|0;g=c[b>>2]|0;h=0;e=0;do{b=a[k+h>>0]|0;if(b<<24>>24)e=a[g+((d[f+h>>0]|0)+(d[j+(b&255)>>0]|0))>>0]^e;h=h+1|0}while(h>>>0<=i>>>0);return e|0}function Um(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=b+72|0;z=b+8|0;eq(c[v>>2]|0,0,(c[z>>2]|0)+1|0)|0;a[c[v>>2]>>0]=1;A=b+76|0;c[A>>2]=0;B=b+112|0;fq(c[B>>2]|0,c[v>>2]|0,(c[z>>2]|0)+1|0)|0;f=c[A>>2]|0;w=b+116|0;c[w>>2]=f;if(f>>>0>=((c[z>>2]|0)-e|0)>>>0){e=f;return e|0}y=b+56|0;s=b+16|0;r=b+20|0;b=f;h=f;p=1;q=f;o=1;g=0;while(1){m=c[y>>2]|0;f=a[m+q>>0]|0;if(!g)l=f;else{n=c[v>>2]|0;l=c[r>>2]|0;k=1;do{i=a[n+k>>0]|0;j=a[m+(q-k)>>0]|0;if(i<<24>>24==0|j<<24>>24==0)i=0;else i=a[(c[s>>2]|0)+((d[l+(j&255)>>0]|0)+(d[l+(i&255)>>0]|0))>>0]|0;f=i^f;k=k+1|0}while(k>>>0<=g>>>0);l=f}do if(!(l<<24>>24)){i=p+1|0;f=o}else{b=(h|0)>-1;if(g<<1>>>0>q>>>0){a:do if(b){k=l&255;l=o&255;if(!(o<<24>>24)){b=h;while(1)if((b|0)>0)b=b+-1|0;else break a}while(1){i=(c[v>>2]|0)+(h+p)|0;j=a[i>>0]|0;f=a[(c[B>>2]|0)+h>>0]|0;b=c[r>>2]|0;if(f<<24>>24!=0?(t=c[s>>2]|0,x=a[t+((d[b+k>>0]|0)+(d[b+(f&255)>>0]|0))>>0]|0,x<<24>>24!=0):0)b=a[t+((d[b+(x&255)>>0]|0)+255-(d[b+l>>0]|0)&65535)>>0]|0;else b=0;a[i>>0]=b^j;if((h|0)>0)h=h+-1|0;else break}}while(0);h=c[w>>2]|0;i=h+p|0;b=c[A>>2]|0;b=i>>>0>b>>>0?i:b;c[A>>2]=b;i=p+1|0;f=o;break}b:do if(b){j=l&255;k=o&255;if(!(o<<24>>24)){b=h;while(1){a[(c[B>>2]|0)+(b+p)>>0]=0;if((b|0)>0)b=b+-1|0;else break b}}while(1){i=c[B>>2]|0;f=a[i+h>>0]|0;b=c[r>>2]|0;if(f<<24>>24!=0?(u=c[s>>2]|0,C=a[u+((d[b+j>>0]|0)+(d[b+(f&255)>>0]|0))>>0]|0,C<<24>>24!=0):0)b=a[u+((d[b+(C&255)>>0]|0)+255-(d[b+k>>0]|0)&65535)>>0]|0;else b=0;a[i+(h+p)>>0]=b;if((h|0)>0)h=h+-1|0;else break}}while(0);b=p+-1|0;if((b|0)>-1){do{a[(c[B>>2]|0)+b>>0]=0;b=b+-1|0}while((b|0)>-1);f=0}else f=0;do{o=(c[v>>2]|0)+f|0;b=a[o>>0]|0;a[o>>0]=a[(c[B>>2]|0)+f>>0]^b;a[(c[B>>2]|0)+f>>0]=b;f=f+1|0;b=(c[w>>2]|0)+p|0}while(f>>>0<=b>>>0);h=c[A>>2]|0;c[A>>2]=b;c[w>>2]=h;i=1;f=l;g=q+1-g|0}while(0);q=q+1|0;if(q>>>0>=((c[z>>2]|0)-e|0)>>>0)break;else{p=i;o=f}}return b|0}function Vm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!(a[f>>0]|0)){e=a[c[e>>2]>>0]|0;if(!(e<<24>>24)){f=0;return f|0}f=a[(c[b>>2]|0)+(e&255)>>0]|0;return f|0}j=c[e>>2]|0;i=c[e+4>>2]|0;g=c[b>>2]|0;h=0;e=0;do{b=a[j+h>>0]|0;if(b<<24>>24)e=a[g+((d[f+h>>0]|0)+(b&255))>>0]^e;h=h+1|0}while(h>>>0<=i>>>0);return e|0}function Wm(b){b=b|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=i;i=i+64|0;if((i|0)>=(j|0))ba();o=x+56|0;n=x+48|0;e=x+40|0;r=x+32|0;s=x+24|0;u=x+16|0;t=x+8|0;m=x;g=(c[b+8>>2]|0)+-1|0;k=c[b+56>>2]|0;w=b+120|0;eq(c[w>>2]|0,0,(c[b+124>>2]|0)+1|0)|0;q=b+16|0;v=b+72|0;f=w;y=f;f=f+4|0;f=d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24;h=s;c[h>>2]=d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24;c[h+4>>2]=f;c[u>>2]=k;c[u+4>>2]=g;g=v;k=g;g=g+4|0;g=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24;h=t;c[h>>2]=d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24;c[h+4>>2]=g;h=q;g=h;h=h+4|0;h=d[h>>0]|d[h+1>>0]<<8|d[h+2>>0]<<16|d[h+3>>0]<<24;k=m;c[k>>2]=d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24;c[k+4>>2]=h;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[o>>2]=c[s>>2];c[o+4>>2]=c[s+4>>2];Xm(r,e,n,o);r=b+76|0;s=b+128|0;c[b+132>>2]=(c[r>>2]|0)+-1;c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[o>>2]=c[s>>2];c[o+4>>2]=c[s+4>>2];Ym(e,n,o);e=c[r>>2]|0;if(!e){i=x;return}t=b+96|0;u=b+12|0;m=b+20|0;v=b+108|0;k=b+100|0;b=e;h=0;do{e=a[(c[t>>2]|0)+h>>0]|0;if(e<<24>>24){f=e&255;e=(_(d[(c[m>>2]|0)+f>>0]|0,(d[u>>0]|0)+-1|0)|0)%255|0;e=a[(c[q>>2]|0)+((e|0)<0?e+255|0:e)>>0]|0;f=c[(c[v>>2]|0)+(f<<2)>>2]|0;c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[o>>2]=c[w>>2];c[o+4>>2]=c[w+4>>2];f=Tm(n,o,f)|0;g=c[(c[v>>2]|0)+((d[(c[t>>2]|0)+h>>0]|0)<<2)>>2]|0;c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[o>>2]=c[s>>2];c[o+4>>2]=c[s+4>>2];g=Tm(n,o,g)|0;b=c[m>>2]|0;if(!(f<<24>>24==0|g<<24>>24==0)?(l=c[q>>2]|0,p=a[l+((d[b+(f&255)>>0]|0)+255-(d[b+(g&255)>>0]|0)&65535)>>0]|0,!(e<<24>>24==0|p<<24>>24==0)):0)b=a[l+((d[b+(p&255)>>0]|0)+(d[b+(e&255)>>0]|0))>>0]|0;else b=0;a[(c[k>>2]|0)+h>>0]=b;b=c[r>>2]|0}h=h+1|0}while(h>>>0>>0);i=x;return}function Xm(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=c[g>>2]|0;o=c[g+4>>2]|0;eq(r|0,0,o+1|0)|0;p=c[e+4>>2]|0;q=c[f+4>>2]|0;n=c[e>>2]|0;l=c[f>>2]|0;m=c[b+4>>2]|0;i=c[b>>2]|0;j=0;do{if(o>>>0>=j>>>0){f=o-j|0;f=q>>>0>f>>>0?f:q;b=n+j|0;k=0;do{h=r+(k+j)|0;g=a[b>>0]|0;e=a[l+k>>0]|0;if(g<<24>>24==0|e<<24>>24==0)g=0;else g=a[i+((d[m+(e&255)>>0]|0)+(d[m+(g&255)>>0]|0))>>0]|0;a[h>>0]=g^a[h>>0];k=k+1|0}while(k>>>0<=f>>>0)}j=j+1|0}while(j>>>0<=p>>>0);return}function Ym(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[e>>2]|0;f=c[e+4>>2]|0;eq(g|0,0,f+1|0)|0;b=c[d>>2]|0;e=0;do{d=e;e=e+1|0;a[g+d>>0]=e&1|0?a[b+e>>0]|0:0}while(e>>>0<=f>>>0);return}function Zm(b,e,f,g,h,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=i;i=i+16|0;if((i|0)>=(j|0))ba();x=y;u=k;w=c[u>>2]|0;u=c[u+4>>2]|0;t=x;c[t>>2]=w;c[t+4>>2]=u;t=k+8|0;u=c[t+4>>2]|0;v=x+8|0;c[v>>2]=c[t>>2];c[v+4>>2]=u;a[w+1>>0]=1;a[w>>0]=a[g>>0]|0;c[x+4>>2]=1;if(f>>>0<=1){x=c[x>>2]|0;w=c[h>>2]|0;g=f+1|0;fq(w|0,x|0,g|0)|0;g=h+4|0;c[g>>2]=f;f=h;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;h=b;b=h;c[b>>2]=g;h=h+4|0;c[h>>2]=f;i=y;return}w=c[e>>2]|0;r=c[e+4>>2]|0;s=r+1|0;t=c[x>>2]|0;u=1;v=0;while(1){n=a[g+u>>0]|0;p=v;v=v&1^1;q=u;u=u+1|0;c[x+(v<<3)+4>>2]=u;k=c[x+(v<<3)>>2]|0;p=c[x+(p<<3)+4>>2]|0;eq(k|0,0,q+2|0)|0;o=p>>>0>u>>>0?u:p;l=r+(n&255)|0;if(!(n<<24>>24)){e=0;do e=e+1|0;while(e>>>0<=o>>>0)}else{n=0;do{m=k+n|0;e=a[t+n>>0]|0;if(!(e<<24>>24))e=0;else e=a[w+((d[r+(e&255)>>0]|0)+(d[l>>0]|0))>>0]|0;a[m>>0]=e^a[m>>0];n=n+1|0}while(n>>>0<=o>>>0)}l=p>>>0>q>>>0?q:p;n=0;do{e=n;n=n+1|0;m=k+n|0;e=a[t+e>>0]|0;if(!(e<<24>>24))e=0;else e=a[w+((d[r+(e&255)>>0]|0)+(d[s>>0]|0))>>0]|0;a[m>>0]=e^a[m>>0]}while(n>>>0<=l>>>0);if((u|0)==(f|0))break;else t=k}x=c[h>>2]|0;g=f+1|0;fq(x|0,k|0,g|0)|0;g=h+4|0;c[g>>2]=f;f=h;g=f;g=c[g>>2]|0;f=f+4|0;f=c[f>>2]|0;h=b;b=h;c[b>>2]=g;h=h+4|0;c[h>>2]=f;i=y;return}function _m(a){a=a|0;var b=0,d=0;b=Xp(28)|0;d=((a&7|0)!=0&1)+(a>>>3)|0;c[b+4>>2]=2;c[b+8>>2]=7;a=Xp(d)|0;c[b+12>>2]=a;c[b+16>>2]=d;c[b>>2]=$m(2,7,10340)|0;c[b+20>>2]=a;c[b+24>>2]=a;return b|0}function $m(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Xp(68)|0;if(!(b>>>0<2|d>>>0>32)?(c[f+8>>2]=d,c[f+4>>2]=b,g=1<>2]=g,g=Xp(g<<2)|0,an(b,d,e,g),c[f>>2]=g,c[f+16>>2]=bn(0,0)|0,c[f+20>>2]=cn(0,0)|0,a[f+24>>0]=0,f|0):0){g=f;return g|0}Yp(f);g=0;return g|0}function an(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;i=1<>>0>1?i:1)<<2|0)|0;return}else j=0;do{g=0;h=1;b=0;while(1){k=((eb((e[d+(g<<1)>>1]|0)&j|0)|0)&1|0)!=0;b=(k?h:0)|b;g=g+1|0;if((g|0)==(a|0))break;else h=h<<1}c[f+(j<<2)>>2]=b;j=j+1|0}while(j>>>0>>0);return}function bn(a,b){a=a|0;b=b|0;var d=0;d=Zp(1,20)|0;if(!a)return d|0;c[d+8>>2]=a;c[d+16>>2]=b;return d|0}function cn(b,d){b=b|0;d=d|0;var e=0,f=0;e=Zp(1,20)|0;if(!(a[45769]|0)){f=0;do{a[45770+f>>0]=f<<7|f>>>7|f>>>5&2|f>>>3&4|f>>>1&8|f<<1&16|f<<3&32|f<<5&64;f=f+1|0}while((f|0)!=256);a[45769]=1}if(!b)return e|0;c[e+16>>2]=b;c[e+8>>2]=d;c[e+12>>2]=8;a[e>>0]=a[b>>0]|0;return e|0}function dn(a){a=a|0;Yp(c[a+12>>2]|0);en(c[a>>2]|0);Yp(a);return}function en(a){a=a|0;fn(a);Yp(a);return}function fn(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+32|0;if((i|0)>=(j|0))ba();d=e;Yp(c[b>>2]|0);gn(c[b+16>>2]|0);hn(c[b+20>>2]|0);if(!(a[b+24>>0]|0)){i=e;return}f=b+32|0;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];jn(d);kn(c[b+60>>2]|0);ln(c[b+64>>2]|0);Yp(c[b+28>>2]|0);i=e;return}function gn(a){a=a|0;Yp(a);return}function hn(a){a=a|0;Yp(a);return}function jn(a){a=a|0;Yp(c[a>>2]|0);Yp(c[a+4>>2]|0);Yp(c[a+20>>2]|0);return}function kn(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=a+20|0;if(c[b>>2]|0){e=0;do{Yp(c[(c[d>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while(e>>>0<(c[b>>2]|0)>>>0)}Yp(c[d>>2]|0);Yp(c[a+32>>2]|0);Yp(a);return}function ln(a){a=a|0;Yp(c[a+4>>2]|0);Yp(c[a+8>>2]|0);Yp(a);return}function mn(a,b){a=a|0;b=b|0;b=c[a+12>>2]|0;c[a+20>>2]=b;c[a+24>>2]=b;return 0}function nn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=a+24|0;i=c[e>>2]|0;g=(c[a+12>>2]|0)+(c[a+16>>2]|0)-i<<3;f=d+1-(c[a+8>>2]|0)|0;h=g>>>0>>0;on(c[a>>2]|0,b,_((h?g-f|0:0)+d|0,c[a+4>>2]|0)|0,i)|0;c[e>>2]=(c[e>>2]|0)+((h?g:f)>>>3);return 0}function on(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((d>>>0)%((c[a+4>>2]|0)>>>0)|0|0){d=0;return d|0}d=pn(a,d,((d&7|0)!=0&1)+(d>>>3)|0,e,b)|0;return d|0}function pn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+32|0;if((i|0)>=(j|0))ba();h=m;k=b+24|0;l=b+4|0;if(!(a[k>>0]|0)){p=c[l>>2]|0;o=b+8|0;q=c[o>>2]|0;a[k>>0]=1;c[b+28>>2]=Zp(1<>2]|0);c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];c[n+8>>2]=c[h+8>>2];c[n+12>>2]=c[h+12>>2];c[n+16>>2]=c[h+16>>2];c[n+20>>2]=c[h+20>>2];c[b+56>>2]=0;n=b+12|0;k=b+60|0;c[k>>2]=rn(q*5|0,q*15|0,65535/((p*255|0)>>>0)|0,(c[n>>2]|0)>>>1,1<<(c[o>>2]|0)+-1)|0;h=b+64|0;c[h>>2]=sn(c[n>>2]|0)|0}else{h=b+64|0;k=b+60|0}p=(d>>>0)/((c[l>>2]|0)>>>0)|0;q=b+16|0;tn(c[q>>2]|0,f,e);un(c[h>>2]|0);vn(c[k>>2]|0);wn(b,p,g);An(b,p,g);Hn(b,p,g);In(c[k>>2]|0,c[q>>2]|0);i=m;return e|0}function qn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=1<>2]<>2];h=m+(g<<2)|0;f=c[h>>2]|0;if(!f){c[h>>2]=d;c[l+(d<<2)>>2]=g;f=d;d=d+1|0}c[k+(j<<2)>>2]=f;j=j+1|0}while(j>>>0>>0);e=Zp(d,4)|0;Yp(m);c[a>>2]=k;c[a+4>>2]=l;c[a+8>>2]=(1<>2]=b;c[a+16>>2]=d;c[a+20>>2]=e;return}function rn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Zp(1,44)|0;c[g>>2]=a;c[g+4>>2]=b;a=b+a|0;c[g+8>>2]=a;c[g+12>>2]=e;c[g+16>>2]=f;b=Xp(a<<2)|0;c[g+20>>2]=b;if(!a)a=0;else{f=0;do{c[b+(f<<2)>>2]=Zp(e,1)|0;f=f+1|0}while(f>>>0>>0)}c[g+32>>2]=Xp(a)|0;c[g+36>>2]=d;return g|0}function sn(a){a=a|0;var b=0,d=0;b=Zp(1,24)|0;c[b+12>>2]=a;d=Zp(2,a)|0;c[b+4>>2]=d;a=Zp(2,a)|0;c[b+8>>2]=a;c[b+16>>2]=d;c[b+20>>2]=a;return b|0}function tn(b,d,e){b=b|0;d=d|0;e=e|0;c[b+8>>2]=d;c[b+16>>2]=e;a[b>>0]=0;c[b+4>>2]=0;c[b+12>>2]=0;return}function un(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;e=a+12|0;eq(c[d>>2]|0,0,c[e>>2]<<1|0)|0;b=a+8|0;eq(c[b>>2]|0,0,c[e>>2]<<1|0)|0;c[a>>2]=0;c[a+16>>2]=c[d>>2];c[a+20>>2]=c[b>>2];return}function vn(a){a=a|0;c[a+28>>2]=0;c[a+24>>2]=0;return}function wn(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;t=a+8|0;if(!((f|0)!=0&(c[t>>2]|0)!=1))return;u=(g|0)!=0;v=a+64|0;w=a+56|0;x=a+4|0;y=a+20|0;z=0;h=0;do{if(!u)h=(xn(c[y>>2]|0,c[x>>2]|0)|0)&255;i=c[v>>2]|0;q=c[i+16>>2]|0;r=c[i+20>>2]|0;p=z;z=z+1|0;s=1<>>1;i=c[(c[a>>2]|0)+(o<<2)>>2]|0;l=c[x>>2]|0;m=g+(_(l,p)|0)|0;if(!(c[w>>2]|0))if(!l)i=0;else{j=i;i=0;k=0;while(1){A=(d[m+k>>0]|0)-(0-(j&1)&255)|0;i=((A|0)<0?0-A|0:A)+(i&65535)|0;k=k+1|0;if((k|0)==(l|0))break;else j=j>>>1}i=i&65535}else i=yn(i,m,l)|0;b[r+(o<<1)>>1]=(e[q+(n<<1)>>1]|0)+(i&65535);o=o+1|0}while(o>>>0>>0);i=c[v>>2]|0}else{j=c[a>>2]|0;k=0;do{A=eb(c[j+(k<<2)>>2]^h|0)|0;b[r+(k<<1)>>1]=(e[q+(k>>>1<<1)>>1]|0)+A;k=k+1|0}while(k>>>0>>0)}zn(i)}while(z>>>0>>0?z>>>0<((c[t>>2]|0)+-1|0)>>>0:0);return}function xn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=b+12|0;g=c[k>>2]|0;j=a[b>>0]|0;if(g>>>0>>0){f=b+4|0;i=(c[f>>2]|0)+1|0;c[f>>2]=i;i=a[(c[b+16>>2]|0)+i>>0]|0;a[b>>0]=i;b=e-g|0;c[k>>2]=8;f=b;h=8;b=(j&255&(1<>2]=j;return (d[45770+((i&255&((1<>>j|b)>>0]|0)>>>(8-e|0)&255|0}function yn(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,f=0,g=0;if(!c){b=0;return b|0}else{e=a;a=0;f=0}while(1){g=(d[b+f>>0]|0)-(e&1|0?255:0)|0;a=(_(g,g)|0)+(a&65535)|0;f=f+1|0;if((f|0)==(c|0))break;else e=e>>>1}g=(a&65535)>>>3;return g|0}function zn(a){a=a|0;var b=0;b=c[a>>2]|0;c[a+16>>2]=c[a+4+(b<<2)>>2];b=b&1^1;c[a>>2]=b;c[a+20>>2]=c[a+4+(b<<2)>>2];return}function An(f,g,h){f=f|0;g=g|0;h=h|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;M=i;i=i+48|0;if((i|0)>=(j|0))ba();I=M+24|0;L=M;J=f+8|0;H=c[J>>2]|0;k=H+-1|0;K=1<>>0>=(E-H|0)>>>0){i=M;return}F=f+28|0;G=(h|0)==0;H=f+20|0;v=f+4|0;w=f+32|0;x=K<<1;y=f+64|0;z=f+60|0;A=K>>>1;B=K>>>0>>0;C=f+16|0;D=L+20|0;u=f+56|0;do{r=c[F>>2]|0;a:do if(G){g=(xn(c[H>>2]|0,c[v>>2]|0)|0)&255;f=1<>2];l=0;do{b[r+(l<<1)>>1]=eb(l^g|0)|0;l=l+1|0}while(l>>>0>>0)}else{g=c[v>>2]|0;if(c[u>>2]|0){f=0;while(1){b[r+(f<<1)>>1]=yn(f,h+(_(g,k)|0)|0,g)|0;f=f+1|0;g=c[v>>2]|0;if(f>>>0>=1<>>0)break a}}n=h+(_(g,k)|0)|0;o=(g|0)==0;p=1<>0]|0)-(0-(l&1)&255)|0;f=((t|0)<0?0-t|0:t)+(f&65535)|0;m=m+1|0;if((m|0)==(g|0))break;else l=l>>>1}f=f&65535}b[r+(q<<1)>>1]=f;q=q+1|0}while(q>>>0

>>0)}while(0);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];c[L+16>>2]=c[w+16>>2];c[L+20>>2]=c[w+20>>2];c[I>>2]=c[w>>2];c[I+4>>2]=c[w+4>>2];c[I+8>>2]=c[w+8>>2];c[I+12>>2]=c[w+12>>2];c[I+16>>2]=c[w+16>>2];c[I+20>>2]=c[w+20>>2];Bn(I,r);f=c[y>>2]|0;g=c[f+16>>2]|0;f=c[f+20>>2]|0;l=Cn(c[z>>2]|0)|0;if(B){m=c[L>>2]|0;n=c[D>>2]|0;p=0;r=K;s=0;while(1){o=p+A|0;q=0;t=0;while(1){R=q+p|0;O=o+q|0;P=c[n+(c[m+(R<<2)>>2]<<2)>>2]|0;Q=c[n+(c[m+(O<<2)>>2]<<2)>>2]|0;R=e[g+(R<<1)>>1]|0;T=R+P|0;O=e[g+(O<<1)>>1]|0;U=O+Q|0;N=t+s|0;S=(T&65535)>>>0>(U&65535)>>>0;b[f+(N<<1)>>1]=S?U:T;a[l+N>>0]=S&1;N=N|1;P=R+(P>>>16)|0;Q=O+(Q>>>16)|0;O=(P&65535)>>>0>(Q&65535)>>>0;b[f+(N<<1)>>1]=O?Q:P;a[l+N>>0]=O&1;q=q+1|0;if((q|0)==4)break;else t=t+2|0}r=r+8|0;if(r>>>0>=x>>>0)break;else{p=p+4|0;s=s+8|0}}}Dn(c[z>>2]|0,f,c[C>>2]|0);zn(c[y>>2]|0);k=k+1|0}while(k>>>0<(E-(c[J>>2]|0)|0)>>>0);i=M;return}function Bn(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;if(f>>>0<=1)return;g=c[a+4>>2]|0;h=c[a+8>>2]|0;i=c[a+12>>2]|0;a=c[a+20>>2]|0;d=1;do{j=c[g+(d<<2)>>2]|0;c[a+(d<<2)>>2]=(e[b+(j>>>i<<1)>>1]|0)<<16|(e[b+((h&j)<<1)>>1]|0);d=d+1|0}while(d>>>0>>0);return}function Cn(a){a=a|0;return c[(c[a+20>>2]|0)+(c[a+24>>2]<<2)>>2]|0}function Dn(a,b,c){a=a|0;b=b|0;c=c|0;En(a,b,c,1);return}function En(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=a+24|0;m=(c[h>>2]|0)+1|0;o=c[a+8>>2]|0;c[h>>2]=(m|0)==(o|0)?0:m;h=a+40|0;m=(c[h>>2]|0)+1|0;c[h>>2]=m;l=a+28|0;n=(c[l>>2]|0)+1|0;c[l>>2]=n;if((m|0)!=(c[a+36>>2]|0)){if((n|0)!=(o|0))return;i=c[a+12>>2]|0;if(!i)h=0;else{h=0;l=-1;m=0;while(1){j=b[d+(m<<1)>>1]|0;k=(j&65535)<(l&65535);h=k?m:h;m=m+g|0;if(m>>>0>=i>>>0)break;else l=k?j:l}}Fn(a,h,c[a>>2]|0,f);return}c[h>>2]=0;m=c[a+12>>2]|0;if(!m)h=0;else{h=0;k=-1;l=0;while(1){i=b[d+(l<<1)>>1]|0;j=(i&65535)<(k&65535);h=j?l:h;l=l+g|0;if(l>>>0>=m>>>0)break;else k=j?i:k}i=e[d+(h<<1)>>1]|0;j=0;do{g=d+(j<<1)|0;b[g>>1]=(e[g>>1]|0)-i;j=j+1|0}while((j|0)!=(m|0))}if((n|0)!=(o|0))return;Fn(a,h,c[a>>2]|0,f);return}function Fn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+16>>2]|0;g=c[b+24>>2]|0;n=c[b+8>>2]|0;g=((g|0)==0?n:g)+-1|0;if(!e){j=d;i=g}else{i=c[b+20>>2]|0;h=0;do{d=((a[(c[i+(g<<2)>>2]|0)+d>>0]|0?m:0)|d)>>>1;h=h+1|0;g=((g|0)==0?n:g)+-1|0}while((h|0)!=(e|0));j=d;i=g}l=b+28|0;d=c[l>>2]|0;if(d>>>0<=e>>>0){m=b+32|0;n=0;m=c[m>>2]|0;Gn(f,m,n);f=c[l>>2]|0;f=f-n|0;c[l>>2]=f;return}k=b+20|0;g=b+32|0;d=d-e|0;b=0;while(1){h=a[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+j>>0]|0?m:0;a[(c[g>>2]|0)+b>>0]=(h|0)!=0&1;b=b+1|0;if((b|0)==(d|0))break;else{j=(h|j)>>>1;i=((i|0)==0?n:i)+-1|0}}n=c[g>>2]|0;Gn(f,n,d);f=c[l>>2]|0;f=f-d|0;c[l>>2]=f;return}function Gn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=e+f+-1|0;m=c[b+8>>2]|0;n=b+12|0;j=c[n>>2]|0;o=b+4|0;k=c[o>>2]|0;do if(k){l=8-k|0;l=l>>>0>>0?l:f;g=a[b>>0]|0;if(!l){i=g;h=(g&255)>>>1}else{g=g&255;i=0;do{h=d[e>>0]|0|g&65535;g=h<<1;e=e+-1|0;i=i+1|0}while(i>>>0>>0);i=g&255;h=h&255}g=k+l|0;if((g|0)==8){a[m+j>>0]=h;f=f-l|0;j=j+1|0;break}a[b>>0]=i;b=g;c[o>>2]=b;return}while(0);k=f>>>3;if(k){i=e+(_(k,-8)|0)|0;g=j;h=0;while(1){a[m+g>>0]=(d[e+-1>>0]|0)<<6|(d[e>>0]|0)<<7|(d[e+-2>>0]|0)<<5|(d[e+-3>>0]|0)<<4|(d[e+-4>>0]|0)<<3|(d[e+-5>>0]|0)<<2|(d[e+-6>>0]|0)<<1|(d[e+-7>>0]|0);h=h+1|0;if((h|0)==(k|0))break;else{e=e+-8|0;g=g+1|0}}e=i;j=j+k|0}m=k<<3;i=f-m|0;if((f|0)==(m|0))e=0;else{g=e;e=0;h=0;while(1){e=(d[g>>0]|0|e&65534)<<1;h=h+1|0;if(h>>>0>=i>>>0)break;else g=g+-1|0}e=e&255}a[b>>0]=e;c[n>>2]=j;b=i;c[o>>2]=b;return}function Hn(f,g,h){f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;v=f+8|0;i=c[v>>2]|0;D=1<>>0>=g>>>0)return;E=f+64|0;F=f+60|0;G=f+28|0;H=(h|0)==0;w=f+20|0;x=f+4|0;y=D<<1;z=D>>>1;A=D>>>0>>0;B=f+16|0;C=f+56|0;do{s=c[E>>2]|0;r=c[s+16>>2]|0;s=c[s+20>>2]|0;t=Cn(c[F>>2]|0)|0;u=c[G>>2]|0;a:do if(H){j=(xn(c[w>>2]|0,c[x>>2]|0)|0)&255;k=1<>2];l=0;do{b[u+(l<<1)>>1]=eb(l^j|0)|0;l=l+1|0}while(l>>>0>>0)}else{j=c[x>>2]|0;if(c[C>>2]|0){k=0;while(1){b[u+(k<<1)>>1]=yn(k,h+(_(j,i)|0)|0,j)|0;k=k+1|0;j=c[x>>2]|0;if(k>>>0>=1<>>0)break a}}n=h+(_(j,i)|0)|0;o=(j|0)==0;p=1<>0]|0)-(0-(l&1)&255)|0;k=((I|0)<0?0-I|0:I)+(k&65535)|0;m=m+1|0;if((m|0)==(j|0))break;else l=l>>>1}k=k&65535}b[u+(q<<1)>>1]=k;q=q+1|0}while(q>>>0

>>0)}while(0);j=c[f>>2]|0;k=1<>2]|0);l=k>>>1;if(A){m=0;n=D;o=0;while(1){p=(e[r+(m<<1)>>1]|0)+(e[u+(c[j+(o<<2)>>2]<<1)>>1]|0)|0;q=(e[r+(m+z<<1)>>1]|0)+(e[u+(c[j+(n<<2)>>2]<<1)>>1]|0)|0;I=(p&65535)>>>0<(q&65535)>>>0;b[s+(o<<1)>>1]=I?p:q;a[t+o>>0]=I&1^1;n=n+k|0;if(n>>>0>=y>>>0)break;else{m=m+l|0;o=o+k|0}}}En(c[F>>2]|0,s,c[B>>2]|0,k);zn(c[E>>2]|0);i=i+1|0}while((i|0)!=(g|0));return}function In(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[b+16>>2]|0;f=c[b+24>>2]|0;l=c[b+8>>2]|0;m=b+28|0;e=c[m>>2]|0;if(!e){k=b+32|0;l=0;k=c[k>>2]|0;Gn(d,k,l);d=c[m>>2]|0;d=d-l|0;c[m>>2]=d;return}k=b+20|0;b=b+32|0;h=0;i=0;g=((f|0)==0?l:f)+-1|0;while(1){f=a[(c[(c[k>>2]|0)+(g<<2)>>2]|0)+h>>0]|0?j:0;a[(c[b>>2]|0)+i>>0]=(f|0)!=0&1;i=i+1|0;if((i|0)==(e|0))break;else{h=(f|h)>>>1;g=((g|0)==0?l:g)+-1|0}}l=c[b>>2]|0;Gn(d,l,e);d=c[m>>2]|0;d=d-e|0;c[m>>2]=d;return}function Jn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+24>>2]|0)-f<<3;a=a>>>0>>0?a:d;a=((a&7|0)!=0&1)+(a>>>3)|0;fq(b|0,f|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return 0}function Kn(a){a=a|0;var b=0,d=0;b=Xp(28)|0;d=((a&7|0)!=0&1)+(a>>>3)|0;c[b+4>>2]=2;c[b+8>>2]=9;a=Xp(d)|0;c[b+12>>2]=a;c[b+16>>2]=d;c[b>>2]=$m(2,9,10344)|0;c[b+20>>2]=a;c[b+24>>2]=a;return b|0}function Ln(a){a=a|0;Yp(c[a+12>>2]|0);en(c[a>>2]|0);Yp(a);return}function Mn(a,b){a=a|0;b=b|0;b=c[a+12>>2]|0;c[a+20>>2]=b;c[a+24>>2]=b;return 0}function Nn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=a+24|0;i=c[e>>2]|0;g=(c[a+12>>2]|0)+(c[a+16>>2]|0)-i<<3;f=d+1-(c[a+8>>2]|0)|0;h=g>>>0>>0;on(c[a>>2]|0,b,_((h?g-f|0:0)+d|0,c[a+4>>2]|0)|0,i)|0;c[e>>2]=(c[e>>2]|0)+((h?g:f)>>>3);return 0}function On(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+24>>2]|0)-f<<3;a=a>>>0>>0?a:d;a=((a&7|0)!=0&1)+(a>>>3)|0;fq(b|0,f|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return 0}function Pn(a){a=a|0;var b=0,d=0;b=Xp(28)|0;d=((a&7|0)!=0&1)+(a>>>3)|0;c[b+4>>2]=3;c[b+8>>2]=9;a=Xp(d)|0;c[b+12>>2]=a;c[b+16>>2]=d;c[b>>2]=$m(3,9,10348)|0;c[b+20>>2]=a;c[b+24>>2]=a;return b|0}function Qn(a){a=a|0;Yp(c[a+12>>2]|0);en(c[a>>2]|0);Yp(a);return}function Rn(a,b){a=a|0;b=b|0;b=c[a+12>>2]|0;c[a+20>>2]=b;c[a+24>>2]=b;return 0}function Sn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=a+24|0;i=c[e>>2]|0;g=(c[a+12>>2]|0)+(c[a+16>>2]|0)-i<<3;f=d+1-(c[a+8>>2]|0)|0;h=g>>>0>>0;on(c[a>>2]|0,b,_((h?g-f|0:0)+d|0,c[a+4>>2]|0)|0,i)|0;c[e>>2]=(c[e>>2]|0)+((h?g:f)>>>3);return 0}function Tn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+24>>2]|0)-f<<3;a=a>>>0>>0?a:d;a=((a&7|0)!=0&1)+(a>>>3)|0;fq(b|0,f|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return 0}function Un(a){a=a|0;var b=0,d=0;b=Xp(28)|0;d=((a&7|0)!=0&1)+(a>>>3)|0;c[b+4>>2]=6;c[b+8>>2]=15;a=Xp(d)|0;c[b+12>>2]=a;c[b+16>>2]=d;c[b>>2]=$m(6,15,10354)|0;c[b+20>>2]=a;c[b+24>>2]=a;return b|0}function Vn(a){a=a|0;Yp(c[a+12>>2]|0);en(c[a>>2]|0);Yp(a);return}function Wn(a,b){a=a|0;b=b|0;b=c[a+12>>2]|0;c[a+20>>2]=b;c[a+24>>2]=b;return 0}function Xn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=a+24|0;i=c[e>>2]|0;g=(c[a+12>>2]|0)+(c[a+16>>2]|0)-i<<3;f=d+1-(c[a+8>>2]|0)|0;h=g>>>0>>0;on(c[a>>2]|0,b,_((h?g-f|0:0)+d|0,c[a+4>>2]|0)|0,i)|0;c[e>>2]=(c[e>>2]|0)+((h?g:f)>>>3);return 0}function Yn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+24>>2]|0)-f<<3;a=a>>>0>>0?a:d;a=((a&7|0)!=0&1)+(a>>>3)|0;fq(b|0,f|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return 0}function Zn(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0.0,g=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0;m=+zp(+tp(+N(+d),+N(+e)));n=+N(+m);if(m==m&0.0==0.0&n!=s){g=~~m;k=0-g|0;d=+ip(d,k);l=+ip(e,k)}else{l=e;g=0}i=d*d+l*l;k=0-g|0;f=+ip((d*b+l*c)/i,k);e=+ip((d*c-l*b)/i,k);do if((f!=f|0.0!=0.0)&(e!=e|0.0!=0.0)){if(i==0.0?!((b!=b|0.0!=0.0)&(c!=c|0.0!=0.0)):0){e=+yo(s,d);f=e*b;e=e*c;break}i=+N(+b);g=i==s;j=+N(+c);k=j==s;if((g|k?d==d&0.0==0.0&+N(+d)!=s:0)?l==l&0.0==0.0&+N(+l)!=s:0){e=+yo(g?1.0:0.0,b);c=+yo(k?1.0:0.0,c);f=(d*e+l*c)*s;e=(d*c-l*e)*s;break}if((m>0.0&n==s?b==b&0.0==0.0&i!=s:0)?c==c&0.0==0.0&j!=s:0){k=+N(+d)==s;n=+yo(k?1.0:0.0,d);k=+N(+l)==s;e=+yo(k?1.0:0.0,l);f=(n*b+e*c)*0.0;e=(n*c-e*b)*0.0}}while(0);h[a>>3]=f;h[a+8>>3]=e;return}function _n(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0.0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0;m=+Ap(+up(+N(+d),+N(+e)));n=+N(+m);if(m==m&0.0==0.0&n!=s){h=~~m;k=0-h|0;d=+wp(d,k);l=+wp(e,k)}else{l=e;h=0}i=d*d+l*l;k=0-h|0;f=+wp((d*b+l*c)/i,k);e=+wp((d*c-l*b)/i,k);do if((f!=f|0.0!=0.0)&(e!=e|0.0!=0.0)){if(i==0.0?!((b!=b|0.0!=0.0)&(c!=c|0.0!=0.0)):0){e=+Ao(s,d);f=e*b;e=e*c;break}i=+N(+b);h=i==s;j=+N(+c);k=j==s;if((h|k?d==d&0.0==0.0&+N(+d)!=s:0)?l==l&0.0==0.0&+N(+l)!=s:0){e=+Ao(+(h&1),b);c=+Ao(+(k&1),c);f=(d*e+l*c)*s;e=(d*c-l*e)*s;break}if((m>0.0&n==s?b==b&0.0==0.0&i!=s:0)?c==c&0.0==0.0&j!=s:0){n=+Ao(+(+N(+d)==s&1),d);e=+Ao(+(+N(+l)==s&1),l);f=(n*b+e*c)*0.0;e=(n*c-e*b)*0.0}}while(0);g[a>>2]=f;g[a+4>>2]=e;return}function $n(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;j=b*d;k=c*e;l=b*e;m=c*d;n=j-k;o=m+l;if(!((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0))){i=a+8|0;h[a>>3]=n;h[i>>3]=o;return}f=+N(+b)==s;g=+N(+c)==s;if(f|g){b=+yo(+(f&1),b);c=+yo(+(g&1),c);if(d!=d|0.0!=0.0)d=+yo(0.0,d);if(e!=e|0.0!=0.0){e=+yo(0.0,e);g=1}else g=1}else g=0;f=+N(+d)==s;i=+N(+e)==s;if(i|f){d=+yo(+(f&1),d);e=+yo(+(i&1),e);if(b!=b|0.0!=0.0)b=+yo(0.0,b);if(c!=c|0.0!=0.0)c=+yo(0.0,c)}else if(!g){i=+N(+j)==s;i=i|+N(+k)==s;i=+N(+l)==s|i;if(!(+N(+m)==s|i)){i=a+8|0;h[a>>3]=n;h[i>>3]=o;return}if(b!=b|0.0!=0.0)b=+yo(0.0,b);if(c!=c|0.0!=0.0)c=+yo(0.0,c);if(d!=d|0.0!=0.0)d=+yo(0.0,d);if(e!=e|0.0!=0.0)e=+yo(0.0,e)}n=(d*b-e*c)*s;o=(d*c+e*b)*s;i=a+8|0;h[a>>3]=n;h[i>>3]=o;return}function ao(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;j=b*d;k=c*e;l=b*e;m=c*d;n=j-k;o=m+l;if(!((n!=n|0.0!=0.0)&(o!=o|0.0!=0.0))){i=a+4|0;g[a>>2]=n;g[i>>2]=o;return}f=+N(+b)==s;h=+N(+c)==s;if(f|h){b=+Ao(+(f&1),b);c=+Ao(+(h&1),c);if(d!=d|0.0!=0.0)d=+Ao(0.0,d);if(e!=e|0.0!=0.0){e=+Ao(0.0,e);h=1}else h=1}else h=0;f=+N(+d)==s;i=+N(+e)==s;if(i|f){d=+Ao(+(f&1),d);e=+Ao(+(i&1),e);if(b!=b|0.0!=0.0)b=+Ao(0.0,b);if(c!=c|0.0!=0.0)c=+Ao(0.0,c)}else if(!h){i=+N(+j)==s;i=i|+N(+k)==s;i=+N(+l)==s|i;if(!(+N(+m)==s|i)){i=a+4|0;g[a>>2]=n;g[i>>2]=o;return}if(b!=b|0.0!=0.0)b=+Ao(0.0,b);if(c!=c|0.0!=0.0)c=+Ao(0.0,c);if(d!=d|0.0!=0.0)d=+Ao(0.0,d);if(e!=e|0.0!=0.0)e=+Ao(0.0,e)}n=(d*b-e*c)*s;o=(d*c+e*b)*s;i=a+4|0;g[a>>2]=n;g[i>>2]=o;return}function bo(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();d=b;c[d>>2]=c[a+60>>2];a=co(cb(6,d|0)|0)|0;i=b;return a|0}function co(a){a=a|0;if(a>>>0>4294963200){c[(eo()|0)>>2]=0-a;a=-1}return a|0}function eo(){var a=0;if(!(c[11306]|0))a=45268;else a=c[(Qa()|0)+64>>2]|0;return a|0}function fo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=i;i=i+48|0;if((i|0)>=(j|0))ba();o=r+16|0;n=r;e=r+32|0;p=a+28|0;f=c[p>>2]|0;c[e>>2]=f;q=a+20|0;f=(c[q>>2]|0)-f|0;c[e+4>>2]=f;c[e+8>>2]=b;c[e+12>>2]=d;l=a+60|0;m=a+44|0;b=2;f=f+d|0;while(1){if(!(c[11306]|0)){c[o>>2]=c[l>>2];c[o+4>>2]=e;c[o+8>>2]=b;h=co(mb(146,o|0)|0)|0}else{Ea(22,a|0);c[n>>2]=c[l>>2];c[n+4>>2]=e;c[n+8>>2]=b;h=co(mb(146,n|0)|0)|0;xa(0)}if((f|0)==(h|0)){f=6;break}if((h|0)<0){f=8;break}f=f-h|0;g=c[e+4>>2]|0;if(h>>>0<=g>>>0)if((b|0)==2){c[p>>2]=(c[p>>2]|0)+h;k=g;b=2}else k=g;else{k=c[m>>2]|0;c[p>>2]=k;c[q>>2]=k;k=c[e+12>>2]|0;h=h-g|0;e=e+8|0;b=b+-1|0}c[e>>2]=(c[e>>2]|0)+h;c[e+4>>2]=k-h}if((f|0)==6){o=c[m>>2]|0;c[a+16>>2]=o+(c[a+48>>2]|0);a=o;c[p>>2]=a;c[q>>2]=a}else if((f|0)==8){c[a+16>>2]=0;c[p>>2]=0;c[q>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[e+4>>2]|0)|0}i=r;return d|0}function go(a){a=a|0;if(!(c[a+68>>2]|0))ho(a);return}function ho(a){a=a|0;return}function io(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+32|0;if((i|0)>=(j|0))ba();g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((co(ib(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;i=f;return a|0}function jo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+48|0;if((i|0)>=(j|0))ba();h=n+16|0;g=n;f=n+32|0;c[f>>2]=d;k=f+4|0;m=b+48|0;o=c[m>>2]|0;c[k>>2]=e-((o|0)!=0&1);l=b+44|0;c[f+8>>2]=c[l>>2];c[f+12>>2]=o;if(!(c[11306]|0)){c[h>>2]=c[b+60>>2];c[h+4>>2]=f;c[h+8>>2]=2;f=co(lb(145,h|0)|0)|0}else{Ea(23,b|0);c[g>>2]=c[b+60>>2];c[g+4>>2]=f;c[g+8>>2]=2;f=co(lb(145,g|0)|0)|0;xa(0)}if((f|0)>=1){k=c[k>>2]|0;if(f>>>0>k>>>0){g=c[l>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-k);if(!(c[m>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else{c[b>>2]=c[b>>2]|f&48^16;c[b+8>>2]=0;c[b+4>>2]=0}i=n;return f|0}function ko(a){a=a|0;if(!(c[a+68>>2]|0))ho(a);return}function lo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+80|0;if((i|0)>=(j|0))ba();f=g;c[b+36>>2]=1;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21505,c[f+8>>2]=g+12,Xa(54,f|0)|0):0)a[b+75>>0]=-1;f=fo(b,d,e)|0;i=g;return f|0}function mo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0;l=i;i=i+112|0;if((i|0)>=(j|0))ba();k=l;c[k>>2]=0;g=k+4|0;c[g>>2]=a;c[k+44>>2]=a;h=k+8|0;c[h>>2]=(a|0)<0?-1:a+2147483647|0;c[k+76>>2]=-1;no(k,0);e=oo(k,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[g>>2]|0)+(c[k+108>>2]|0)-(c[h>>2]|0));i=l;return e|0}function no(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;if((b|0)!=0&(f|0)>(b|0))c[a+100>>2]=e+b;else c[a+100>>2]=d;return}function oo(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(eo()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0}while((so(i)|0)!=0);b:do switch(i|0){case 43:case 45:{j=((i|0)==45)<<31>>31;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0;p=j;break b}else{i=po(b)|0;p=j;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=po(b)|0;if((d[42356+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){no(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if((d[42356+i>>0]|0)>>>0>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;no(b,0);c[(eo()|0)>>2]=22;h=0;g=0;break a}}while(0);if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;while(1){j=(i*10|0)+e|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;i=d[e>>0]|0}else i=po(b)|0;e=i+-48|0;if(!(e>>>0<10&j>>>0<429496729)){e=j;break}else i=j}j=0}else{e=0;j=0}f=i+-48|0;if(f>>>0<10){while(1){k=pq(e|0,j|0,10,0)|0;l=C;m=((f|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&k>>>0>~f>>>0){k=e;break}e=iq(k|0,l|0,f|0,m|0)|0;j=C;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0;f=i+-48|0;if(!(f>>>0<10&(j>>>0<429496729|(j|0)==429496729&e>>>0<2576980378))){k=e;break}}if(f>>>0>9){i=k;e=p}else{e=10;n=72}}else{i=e;e=p}}else n=46;c:do if((n|0)==46){if(!(e+-1&e)){n=a[42612+((e*23|0)>>>5&7)>>0]|0;j=a[42356+i>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f|i<>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0;j=a[42356+i>>0]|0;f=j&255;if(!(k>>>0<134217728&f>>>0>>0))break;else i=k}f=0}else{f=0;k=0}l=hq(-1,-1,n|0)|0;m=C;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break}else i=f;while(1){k=jq(k|0,i|0,n|0)|0;f=C;k=j&255|k;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0;j=a[42356+i>>0]|0;if((j&255)>>>0>=e>>>0|(f>>>0>m>>>0|(f|0)==(m|0)&k>>>0>l>>>0)){j=f;n=72;break c}else i=f}}j=a[42356+i>>0]|0;f=j&255;if(f>>>0>>0){i=0;while(1){k=f+(_(i,e)|0)|0;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0;j=a[42356+i>>0]|0;f=j&255;if(!(k>>>0<119304647&f>>>0>>0))break;else i=k}f=0}else{k=0;f=0}if((j&255)>>>0>>0){n=qq(-1,-1,e|0,0)|0;o=C;m=f;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&k>>>0>n>>>0){j=m;n=72;break c}f=pq(k|0,m|0,e|0,0)|0;l=C;j=j&255;if(l>>>0>4294967295|(l|0)==-1&f>>>0>~j>>>0){j=m;n=72;break c}k=iq(j|0,0,f|0,l|0)|0;f=C;i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0;j=a[42356+i>>0]|0;if((j&255)>>>0>=e>>>0){j=f;n=72;break}else m=f}}else{j=f;n=72}}while(0);if((n|0)==72)if((d[42356+i>>0]|0)>>>0>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=po(b)|0}while((d[42356+i>>0]|0)>>>0>>0);c[(eo()|0)>>2]=34;j=h;i=g;e=(g&1|0)==0&0==0?p:0}else{i=k;e=p}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(j>>>0>>0|(j|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(e|0)!=0)){c[(eo()|0)>>2]=34;g=iq(g|0,h|0,-1,-1)|0;h=C;break}if(j>>>0>h>>>0|(j|0)==(h|0)&i>>>0>g>>>0){c[(eo()|0)>>2]=34;break}}g=((e|0)<0)<<31>>31;g=cq(i^e|0,j^g|0,e|0,g|0)|0;h=C}while(0);C=h;return g|0}function po(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;i=c[f>>2]|0;if((i|0)!=0?(c[b+108>>2]|0)>=(i|0):0)j=4;else{e=qo(b)|0;if((e|0)>=0){f=c[f>>2]|0;i=c[b+8>>2]|0;if(f){h=c[b+4>>2]|0;f=f-(c[b+108>>2]|0)|0;g=i;if((i-h|0)<(f|0))j=9;else c[b+100>>2]=h+(f+-1)}else{g=i;j=9}if((j|0)==9)c[b+100>>2]=i;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;b=b+108|0;c[b>>2]=g+1-f+(c[b>>2]|0)}f=f+-1|0;if((d[f>>0]|0|0)!=(e|0))a[f>>0]=e}else j=4}if((j|0)==4){c[b+100>>2]=0;e=-1}return e|0}function qo(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();b=e;if((c[a+8>>2]|0)==0?(ro(a)|0)!=0:0)b=-1;else if((pb[c[a+32>>2]&15](a,b,1)|0)==1)b=d[b>>0]|0;else b=-1;i=e;return b|0}function ro(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+44|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)pb[c[b+36>>2]&15](b,0,0)|0;c[b+16>>2]=0;c[b+28>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(d&20)if(!(d&4))d=-1;else{c[b>>2]=d|32;d=-1}else{d=c[e>>2]|0;c[b+8>>2]=d;c[b+4>>2]=d;d=0}return d|0}function so(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function to(a,b,c){a=a|0;b=b|0;c=c|0;a=mo(a,b,c,0,-2147483648)|0;return a|0}function uo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;j=+g[b+4>>2];i=+X(+(+g[b>>2]+-162.88958740234375));b=(g[k>>2]=i,c[k>>2]|0);i=(c[k>>2]=b&8388607|2130706432,+g[k>>2]);d=d+-19+(b>>>23)|0;b=(d|0)/2|0;h=(c[k>>2]=(b<<23)+1065353216,+g[k>>2]);f=(c[k>>2]=(d-b<<23)+1065353216,+g[k>>2]);e=+R(+j)*i*h*f;g[a>>2]=+Q(+j)*i*h*f;g[a+4>>2]=e;return}function vo(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0;a=+N(+a);h[k>>3]=a;m=c[k>>2]|0;g=c[k+4>>2]|0;a=+N(+b);h[k>>3]=a;e=c[k>>2]|0;f=c[k+4>>2]|0;i=g>>>0>>0|(g|0)==(f|0)&m>>>0>>0;l=i?e:m;j=i?f:g;e=i?m:e;f=i?g:f;g=hq(l|0,j|0,52)|0;i=hq(e|0,f|0,52)|0;c[k>>2]=l;c[k+4>>2]=j;a=+h[k>>3];c[k>>2]=e;c[k+4>>2]=f;b=+h[k>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+b;break}if(g>>>0<=1533)if(i>>>0<573){a=a*5260135901548373507240989.0e186;b=b*5260135901548373507240989.0e186;d=1.90109156629516e-211}else d=1.0;else{a=a*1.90109156629516e-211;b=b*1.90109156629516e-211;d=5260135901548373507240989.0e186}o=a*134217729.0;o=o+(a-o);n=a-o;a=a*a;q=b*134217729.0;q=q+(b-q);p=b-q;b=b*b;a=d*+O(+(a+(b+(p*p+(q*q-b+q*2.0*p)+(n*n+(o*o-a+o*2.0*n))))))}}else a=b;while(0);return +a}function wo(a){a=a|0;return +(+xo(+g[a>>2],+g[a+4>>2]))}function xo(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,h=0,i=0;a=+N(+a);h=(g[k>>2]=a,c[k>>2]|0);b=+N(+b);f=(g[k>>2]=b,c[k>>2]|0);i=h>>>0>>0;e=i?f:h;f=i?h:f;b=(c[k>>2]=e,+g[k>>2]);a=(c[k>>2]=f,+g[k>>2]);do if((f|0)!=2139095040){if(e>>>0>2139095039|(f|0)==0|(e-f|0)>>>0>209715199){a=b+a;break}if(e>>>0<=1568669695)if(f>>>0<562036736){a=a*1237940039285380274899124.0e3;b=b*1237940039285380274899124.0e3;d=8.077935669463161e-28}else d=1.0;else{a=a*8.077935669463161e-28;b=b*8.077935669463161e-28;d=1237940039285380274899124.0e3}a=d*+O(+(b*b+a*a))}while(0);return +a}function yo(a,b){a=+a;b=+b;var d=0;h[k>>3]=b;d=c[k+4>>2]|0;b=+N(+a);h[k>>3]=b;d=d&-2147483648|c[k+4>>2];c[k>>2]=c[k>>2];c[k+4>>2]=d;return +(+h[k>>3])}function zo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,h=0.0;h=+g[b>>2];f=+g[b+4>>2];do if(!(h==0.0&f==0.0)){d=+N(+f);if(((g[k>>2]=d,c[k>>2]|0)|0)==2139095040){g[a>>2]=s;g[a+4>>2]=f;break}e=(g[k>>2]=h,c[k>>2]|0);d=+N(+h);b=(g[k>>2]=d,c[k>>2]|0);if(b>>>0>2139095040){f=f-f;g[a>>2]=h;g[a+4>>2]=f/f;break}if((b|0)==2139095040){d=f-f;if((e|0)<0){d=+N(+d);h=+Ao(h,f);g[a>>2]=d;g[a+4>>2]=h;break}else{f=+Ao(d,f);g[a>>2]=h;g[a+4>>2]=f;break}}else if(!(h>=0.0)){h=+O(+((-h+ +vo(h,f))*.5));d=+N(+f)/(h*2.0);h=+Ao(h,f);g[a>>2]=d;g[a+4>>2]=h;break}else{h=+O(+((h+ +vo(h,f))*.5));g[a>>2]=h;g[a+4>>2]=f/(h*2.0);break}}else{g[a>>2]=0.0;g[a+4>>2]=f}while(0);return}function Ao(a,b){a=+a;b=+b;var d=0;d=(g[k>>2]=b,c[k>>2]|0);b=+N(+a);return +(c[k>>2]=d&-2147483648|(g[k>>2]=b,c[k>>2]|0),+g[k>>2])}function Bo(a){a=a|0;return +(+W(+(+g[a+4>>2]),+(+g[a>>2])))}function Co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,k=0;d=i;i=i+32|0;if((i|0)>=(j|0))ba();f=d+16|0;e=d+8|0;h=d;k=c[b>>2]|0;g[h>>2]=-+g[b+4>>2];c[h+4>>2]=k;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];Do(e,f);b=c[e+4>>2]|0;c[a>>2]=c[e>>2];c[a+4>>2]=b;i=d;return}function Do(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0.0;s=i;i=i+32|0;if((i|0)>=(j|0))ba();e=s+16|0;f=s+8|0;h=s;p=+g[b>>2];l=b+4|0;q=+g[l>>2];r=(g[k>>2]=p,c[k>>2]|0);d=+N(+p);m=(g[k>>2]=d,c[k>>2]|0);d=+N(+q);n=(g[k>>2]=d,c[k>>2]|0);o=(m|0)<2139095040;do if(o&(n|0)<2139095040){if(!n){g[a>>2]=+Eo(p);g[a+4>>2]=p*q;break}if((m|0)<1091567616){d=+Eo(p)*+Q(+q);q=+Ho(p)*+R(+q);g[a>>2]=d;g[a+4>>2]=q;break}if((m|0)<1118925336){t=+X(+(+N(+p)))*.5;d=t*+Q(+q);q=+Ao(t,p)*+R(+q);g[a>>2]=d;g[a+4>>2]=q;break}if((m|0)<1128313319){g[h>>2]=+N(+p);g[h+4>>2]=q;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];uo(f,e,-1);r=c[f>>2]|0;t=+g[f+4>>2];c[b>>2]=r;g[l>>2]=t;t=t*+Ao(1.0,p);c[a>>2]=r;g[a+4>>2]=t;break}else{p=p*1701411834604692317316873.0e14;t=p*+R(+q);g[a>>2]=p*p*+Q(+q);g[a+4>>2]=t;break}}else{f=(n|0)>2139095039;if((m|0)==0&f){q=q-q;t=+Ao(0.0,p*q);g[a>>2]=q;g[a+4>>2]=t;break}e=(m|0)>2139095039;if(e&(n|0)==0){d=p*p;if(!(r&8388607)){t=q*+Ao(0.0,p);g[a>>2]=d;g[a+4>>2]=t;break}else{t=+Ao(0.0,(p+p)*q);g[a>>2]=d;g[a+4>>2]=t;break}}if(o&f){t=q-q;g[a>>2]=t;g[a+4>>2]=p*t;break}d=p*p;if(!(e&(r&8388607|0)==0)){t=q-q;g[a>>2]=d*t;g[a+4>>2]=(p+p)*t;break}if(f){g[a>>2]=d;g[a+4>>2]=p*(q-q);break}else{t=p*+R(+q);g[a>>2]=d*+Q(+q);g[a+4>>2]=t;break}}while(0);i=s;return}function Eo(a){a=+a;var b=0;a=+N(+a);b=(g[k>>2]=a,c[k>>2]|0);do if(b>>>0<1060205079)if(b>>>0<964689920)a=1.0;else{a=+Fo(a);a=a*a/((a+1.0)*2.0)+1.0}else if(b>>>0<1118925335){a=+X(+a);a=(a+1.0/a)*.5;break}else{a=+Go(a);break}while(0);return +a}function Fo(a){a=+a;var b=0,d=0,e=0.0,f=0.0,h=0.0,i=0,j=0.0;d=(g[k>>2]=a,c[k>>2]|0);h=+N(+a);b=(g[k>>2]=h,c[k>>2]|0);d=d>>>31;do if(b>>>0>1100331075){if(b>>>0<=2139095040)if(!d)if(a>88.7216796875)a=a*1701411834604692317316873.0e14;else i=11;else a=-1.0}else{if(b>>>0<=1051816472)if(b>>>0<855638016)break;else{h=0.0;d=0;i=14;break}if(b>>>0<1065686418)if(!d){e=a+-.6931381225585938;b=1;f=9.05800061445916e-06;i=12;break}else{e=a+.6931381225585938;b=-1;f=-9.05800061445916e-06;i=12;break}else i=11}while(0);if((i|0)==11){b=~~(a*1.4426950216293335+(d|0?-.5:.5));f=+(b|0);e=a-f*.6931381225585938;f=f*9.05800061445916e-06;i=12}if((i|0)==12){h=e-f;a=h;h=e-h-f;d=b;i=14}a:do if((i|0)==14){f=a*.5;e=a*f;j=e*(e*1.5807170420885086e-03+-.03333321213722229)+1.0;f=3.0-f*j;f=e*((j-f)/(6.0-a*f));if(!d){a=a-(a*f-e);break}e=a*(f-h)-h-e;switch(d|0){case -1:{a=(a-e)*.5+-.5;break a}case 1:if(a<-.25){a=(e-(a+.5))*-2.0;break a}else{a=(a-e)*2.0+1.0;break a}default:{f=(c[k>>2]=(d<<23)+1065353216,+g[k>>2]);if(d>>>0>56){a=a-e+1.0;a=((d|0)==128?a*2.0*1701411834604692317316873.0e14:f*a)+-1.0;break a}b=127-d<<23;if((d|0)<23)a=1.0-(c[k>>2]=b,+g[k>>2])+(a-e);else a=a-((c[k>>2]=b,+g[k>>2])+e)+1.0;a=f*a;break a}}}while(0);return +a}function Go(a){a=+a;return +(+X(+(a+-162.88958740234375))*1661534994731144841129758.0e11*1661534994731144841129758.0e11)}function Ho(a){a=+a;var b=0.0,d=0.0,e=0;d=((g[k>>2]=a,c[k>>2]|0)|0)<0?-.5:.5;b=+N(+a);e=(g[k>>2]=b,c[k>>2]|0);do if(e>>>0<1118925335){b=+Fo(b);if(e>>>0>=1065353216){a=d*(b+b/(b+1.0));break}if(e>>>0>=964689920)a=d*(b*2.0-b*b/(b+1.0))}else a=d*2.0*+Go(b);while(0);return +a}function Io(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0,l=0,m=0,n=0.0,o=0,p=0.0;o=i;i=i+32|0;if((i|0)>=(j|0))ba();h=o+16|0;l=o+8|0;m=o;n=+g[b>>2];d=+g[b+4>>2];p=+N(+d);e=(g[k>>2]=p,c[k>>2]|0);do if(e){f=(g[k>>2]=n,c[k>>2]|0);p=+N(+n);b=(g[k>>2]=p,c[k>>2]|0);if(!b){p=+R(+d);g[a>>2]=+Q(+d);g[a+4>>2]=p;break}if(e>>>0<=2139095039)if((f+-1118925336|0)>>>0<9342557){g[m>>2]=n;g[m+4>>2]=d;c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];uo(l,h,0);m=c[l+4>>2]|0;c[a>>2]=c[l>>2];c[a+4>>2]=m;break}else{n=+X(+n);p=n*+R(+d);g[a>>2]=n*+Q(+d);g[a+4>>2]=p;break}if((b|0)!=2139095040){p=d-d;g[a>>2]=p;g[a+4>>2]=p;break}if((f|0)<0){g[a>>2]=0.0;g[a+4>>2]=0.0;break}else{g[a>>2]=n;g[a+4>>2]=d-d;break}}else{g[a>>2]=+X(+n);g[a+4>>2]=d}while(0);i=o;return}function Jo(a,b){a=a|0;b=b|0;var c=0.0;c=-+h[b+8>>3];h[a>>3]=+h[b>>3];h[a+8>>3]=c;return}function Ko(a,b){a=a|0;b=b|0;var d=0.0;d=-+g[b+4>>2];c[a>>2]=c[b>>2];g[a+4>>2]=d;return}function Lo(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,h=0,k=0,l=0;d=i;i=i+32|0;if((i|0)>=(j|0))ba();h=d+16|0;f=d+8|0;k=d;l=c[b>>2]|0;g[k>>2]=-+g[b+4>>2];c[k+4>>2]=l;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];Mo(f,h);e=-+g[f>>2];c[a>>2]=c[f+4>>2];g[a+4>>2]=e;i=d;return}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,t=0.0,u=0.0;r=i;i=i+32|0;if((i|0)>=(j|0))ba();d=r+16|0;e=r+8|0;f=r;m=+g[b>>2];h=b+4|0;n=+g[h>>2];o=(g[k>>2]=m,c[k>>2]|0);t=+N(+m);l=(g[k>>2]=t,c[k>>2]|0);t=+N(+n);p=(g[k>>2]=t,c[k>>2]|0);q=(l|0)<2139095040;do if(q&(p|0)<2139095040){if(!p){g[a>>2]=+Ho(m);g[a+4>>2]=n;break}if((l|0)<1091567616){u=+Ho(m)*+Q(+n);t=+Eo(m)*+R(+n);g[a>>2]=u;g[a+4>>2]=t;break}if((l|0)<1118925336){t=+X(+(+N(+m)))*.5;u=t*+R(+n);g[a>>2]=+Ao(t,m)*+Q(+n);g[a+4>>2]=u;break}if((l|0)<1128313319){g[f>>2]=+N(+m);g[f+4>>2]=n;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];uo(e,d,-1);p=c[e>>2]|0;q=c[e+4>>2]|0;c[b>>2]=p;c[h>>2]=q;u=(c[k>>2]=p,+g[k>>2]);g[a>>2]=u*+Ao(1.0,m);c[a+4>>2]=q;break}else{t=m*1701411834604692317316873.0e14;u=t*t*+R(+n);g[a>>2]=t*+Q(+n);g[a+4>>2]=u;break}}else{e=(p|0)>2139095039;if((l|0)==0&e){u=n-n;g[a>>2]=+Ao(0.0,m*u);g[a+4>>2]=u;break}d=(l|0)>2139095039;if(d&(p|0)==0)if(!(o&8388607)){g[a>>2]=m;g[a+4>>2]=n;break}else{u=+Ao(0.0,n);g[a>>2]=m;g[a+4>>2]=u;break}if(q&e){u=n-n;g[a>>2]=u;g[a+4>>2]=m*u;break}if(!(d&(o&8388607|0)==0)){u=n-n;g[a>>2]=m*m*u;g[a+4>>2]=(m+m)*u;break}if(e){g[a>>2]=m*m;g[a+4>>2]=m*(n-n);break}else{t=m*+Q(+n);u=+R(+n)*s;g[a>>2]=t;g[a+4>>2]=u;break}}while(0);i=r;return}function No(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=_(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function Oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;c[f>>2]=d;d=Po(a,b,f)|0;i=e;return d|0}function Po(a,b,c){a=a|0;b=b|0;c=c|0;return Qo(a,2147483647,b,c)|0}function Qo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+128|0;if((i|0)>=(j|0))ba();g=o+112|0;n=o;h=n;k=9628;l=h+112|0;do{c[h>>2]=c[k>>2];h=h+4|0;k=k+4|0}while((h|0)<(l|0));if((d+-1|0)>>>0>2147483646)if(!d){d=1;m=4}else{c[(eo()|0)>>2]=75;d=-1}else{g=b;m=4}if((m|0)==4){m=-2-g|0;m=d>>>0>m>>>0?m:d;c[n+48>>2]=m;b=n+20|0;c[b>>2]=g;c[n+44>>2]=g;d=g+m|0;g=n+16|0;c[g>>2]=d;c[n+28>>2]=d;d=So(n,e,f)|0;if(m){e=c[b>>2]|0;a[e+(((e|0)==(c[g>>2]|0))<<31>>31)>>0]=0}}i=o;return d|0}function Ro(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;fq(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function So(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=i;i=i+224|0;if((i|0)>=(j|0))ba();p=t+120|0;s=t+80|0;r=t;q=t+136|0;f=s;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[p>>2]=c[e>>2];if((To(0,d,p,r,s)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)n=cp(b)|0;else n=0;e=c[b>>2]|0;o=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;e=b+48|0;if(!(c[e>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=q;k=b+28|0;c[k>>2]=q;l=b+20|0;c[l>>2]=q;c[e>>2]=80;m=b+16|0;c[m>>2]=q+80;f=To(b,d,p,r,s)|0;if(h){pb[c[b+36>>2]&15](b,0,0)|0;f=(c[l>>2]|0)==0?-1:f;c[g>>2]=h;c[e>>2]=0;c[m>>2]=0;c[k>>2]=0;c[l>>2]=0}}else f=To(b,d,p,r,s)|0;e=c[b>>2]|0;c[b>>2]=e|o;if(n|0)ho(b);e=(e&32|0)==0?f:-1}i=t;return e|0}function To(e,f,g,l,m){e=e|0;f=f|0;g=g|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;ka=i;i=i+624|0;if((i|0)>=(j|0))ba();fa=ka+24|0;ha=ka+16|0;ga=ka+588|0;ca=ka+576|0;ea=ka;X=ka+536|0;ja=ka+8|0;ia=ka+528|0;N=(e|0)!=0;O=X+40|0;W=O;X=X+39|0;Y=ja+4|0;Z=ga;$=0-Z|0;aa=ca+12|0;ca=ca+11|0;da=aa;P=da-Z|0;Q=-2-Z|0;R=da+2|0;S=fa+288|0;T=ga+9|0;U=T;V=ga+8|0;n=0;p=0;o=0;z=f;a:while(1){do if((n|0)>-1)if((p|0)>(2147483647-n|0)){c[(eo()|0)>>2]=75;n=-1;break}else{n=p+n|0;break}while(0);f=a[z>>0]|0;if(!(f<<24>>24)){M=244;break}else p=z;b:while(1){switch(f<<24>>24){case 37:{f=p;M=9;break b}case 0:{f=p;break b}default:{}}L=p+1|0;f=a[L>>0]|0;p=L}c:do if((M|0)==9)while(1){M=0;if((a[f+1>>0]|0)!=37)break c;p=p+1|0;f=f+2|0;if((a[f>>0]|0)==37)M=9;else break}while(0);x=p-z|0;if(N?(c[e>>2]&32|0)==0:0)Uo(z,x,e)|0;if((p|0)!=(z|0)){p=x;z=f;continue}s=f+1|0;p=a[s>>0]|0;q=(p<<24>>24)+-48|0;if(q>>>0<10){L=(a[f+2>>0]|0)==36;s=L?f+3|0:s;p=a[s>>0]|0;v=L?q:-1;o=L?1:o}else v=-1;f=p<<24>>24;d:do if((f&-32|0)==32){q=0;while(1){if(!(1<>24)+-32|q;s=s+1|0;p=a[s>>0]|0;f=p<<24>>24;if((f&-32|0)!=32){t=q;break}}}else t=0;while(0);do if(p<<24>>24==42){p=s+1|0;f=(a[p>>0]|0)+-48|0;if(f>>>0<10?(a[s+2>>0]|0)==36:0){c[m+(f<<2)>>2]=10;o=1;s=s+3|0;f=c[l+((a[p>>0]|0)+-48<<3)>>2]|0}else{if(o|0){n=-1;break a}if(!N){w=t;o=0;s=p;L=0;break}o=(c[g>>2]|0)+(4-1)&~(4-1);f=c[o>>2]|0;c[g>>2]=o+4;o=0;s=p}if((f|0)<0){w=t|8192;L=0-f|0}else{w=t;L=f}}else{q=(p<<24>>24)+-48|0;if(q>>>0<10){f=s;p=0;do{p=(p*10|0)+q|0;f=f+1|0;q=(a[f>>0]|0)+-48|0}while(q>>>0<10);if((p|0)<0){n=-1;break a}else{w=t;s=f;L=p}}else{w=t;L=0}}while(0);e:do if((a[s>>0]|0)==46){f=s+1|0;p=a[f>>0]|0;if(p<<24>>24!=42){q=(p<<24>>24)+-48|0;if(q>>>0<10)p=0;else{t=0;break}while(1){p=(p*10|0)+q|0;f=f+1|0;q=(a[f>>0]|0)+-48|0;if(q>>>0>=10){t=p;break e}}}f=s+2|0;p=(a[f>>0]|0)+-48|0;if(p>>>0<10?(a[s+3>>0]|0)==36:0){c[m+(p<<2)>>2]=10;t=c[l+((a[f>>0]|0)+-48<<3)>>2]|0;f=s+4|0;break}if(o|0){n=-1;break a}if(N){K=(c[g>>2]|0)+(4-1)&~(4-1);t=c[K>>2]|0;c[g>>2]=K+4}else t=0}else{t=-1;f=s}while(0);u=0;while(1){p=(a[f>>0]|0)+-65|0;if(p>>>0>57){n=-1;break a}q=f+1|0;p=a[42621+(u*58|0)+p>>0]|0;s=p&255;if((s+-1|0)>>>0<8){f=q;u=s}else{K=q;break}}if(!(p<<24>>24)){n=-1;break}q=(v|0)>-1;do if(p<<24>>24==19)if(q){n=-1;break a}else M=52;else{if(q){c[m+(v<<2)>>2]=s;I=l+(v<<3)|0;J=c[I+4>>2]|0;M=ea;c[M>>2]=c[I>>2];c[M+4>>2]=J;M=52;break}if(!N){n=0;break a}Wo(ea,s,g)}while(0);if((M|0)==52?(M=0,!N):0){p=x;z=K;continue}v=a[f>>0]|0;v=(u|0)!=0&(v&15|0)==3?v&-33:v;q=w&-65537;J=(w&8192|0)==0?w:q;f:do switch(v|0){case 110:switch(u|0){case 0:{c[c[ea>>2]>>2]=n;p=x;z=K;continue a}case 1:{c[c[ea>>2]>>2]=n;p=x;z=K;continue a}case 2:{p=c[ea>>2]|0;c[p>>2]=n;c[p+4>>2]=((n|0)<0)<<31>>31;p=x;z=K;continue a}case 3:{b[c[ea>>2]>>1]=n;p=x;z=K;continue a}case 4:{a[c[ea>>2]>>0]=n;p=x;z=K;continue a}case 6:{c[c[ea>>2]>>2]=n;p=x;z=K;continue a}case 7:{p=c[ea>>2]|0;c[p>>2]=n;c[p+4>>2]=((n|0)<0)<<31>>31;p=x;z=K;continue a}default:{p=x;z=K;continue a}}case 112:{u=J|8;t=t>>>0>8?t:8;v=120;M=64;break}case 88:case 120:{u=J;M=64;break}case 111:{q=ea;p=c[q>>2]|0;q=c[q+4>>2]|0;if((p|0)==0&(q|0)==0)f=O;else{f=O;do{f=f+-1|0;a[f>>0]=p&7|48;p=hq(p|0,q|0,3)|0;q=C}while(!((p|0)==0&(q|0)==0))}if(!(J&8)){p=J;u=0;s=43101;M=77}else{u=W-f|0;p=J;t=(t|0)>(u|0)?t:u+1|0;u=0;s=43101;M=77}break}case 105:case 100:{p=ea;f=c[p>>2]|0;p=c[p+4>>2]|0;if((p|0)<0){f=cq(0,0,f|0,p|0)|0;p=C;q=ea;c[q>>2]=f;c[q+4>>2]=p;q=1;s=43101;M=76;break f}if(!(J&2048)){s=J&1;q=s;s=(s|0)==0?43101:43103;M=76}else{q=1;s=43102;M=76}break}case 117:{p=ea;f=c[p>>2]|0;p=c[p+4>>2]|0;q=0;s=43101;M=76;break}case 99:{a[X>>0]=c[ea>>2];f=X;v=1;x=0;w=43101;p=O;break}case 109:{p=Yo(c[(eo()|0)>>2]|0)|0;M=82;break}case 115:{p=c[ea>>2]|0;p=p|0?p:45003;M=82;break}case 67:{c[ja>>2]=c[ea>>2];c[Y>>2]=0;c[ea>>2]=ja;f=ja;t=-1;M=86;break}case 83:{f=c[ea>>2]|0;if(!t){Zo(e,32,L,0,J);f=0;M=97}else M=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{r=+h[ea>>3];c[ha>>2]=0;h[k>>3]=r;if((c[k+4>>2]|0)>=0)if(!(J&2048)){I=J&1;H=I;I=(I|0)==0?45011:45016}else{H=1;I=45013}else{r=-r;H=1;I=45010}h[k>>3]=r;G=c[k+4>>2]&2146435072;do if(G>>>0<2146435072|(G|0)==2146435072&0<0){y=+ap(r,ha)*2.0;p=y!=0.0;if(p)c[ha>>2]=(c[ha>>2]|0)+-1;E=v|32;if((E|0)==97){w=v&32;z=(w|0)==0?I:I+9|0;x=H|2;f=12-t|0;do if(!(t>>>0>11|(f|0)==0)){r=8.0;do{f=f+-1|0;r=r*16.0}while((f|0)!=0);if((a[z>>0]|0)==45){r=-(r+(-y-r));break}else{r=y+r-r;break}}else r=y;while(0);p=c[ha>>2]|0;f=(p|0)<0?0-p|0:p;f=Xo(f,((f|0)<0)<<31>>31,aa)|0;if((f|0)==(aa|0)){a[ca>>0]=48;f=ca}a[f+-1>>0]=(p>>31&2)+43;u=f+-2|0;a[u>>0]=v+15;s=(t|0)<1;q=(J&8|0)==0;p=ga;while(1){I=~~r;f=p+1|0;a[p>>0]=d[43085+I>>0]|w;r=(r-+(I|0))*16.0;do if((f-Z|0)==1){if(q&(s&r==0.0))break;a[f>>0]=46;f=p+2|0}while(0);if(!(r!=0.0))break;else p=f}q=u;t=(t|0)!=0&(Q+f|0)<(t|0)?R+t-q|0:P-q+f|0;s=t+x|0;Zo(e,32,L,s,J);if(!(c[e>>2]&32))Uo(z,x,e)|0;Zo(e,48,L,s,J^65536);p=f-Z|0;if(!(c[e>>2]&32))Uo(ga,p,e)|0;f=da-q|0;Zo(e,48,t-(p+f)|0,0,0);if(!(c[e>>2]&32))Uo(u,f,e)|0;Zo(e,32,L,s,J^8192);f=(s|0)<(L|0)?L:s;break}f=(t|0)<0?6:t;if(p){p=(c[ha>>2]|0)+-28|0;c[ha>>2]=p;r=y*268435456.0}else{r=y;p=c[ha>>2]|0}G=(p|0)<0?fa:S;F=G;p=G;do{D=~~r>>>0;c[p>>2]=D;p=p+4|0;r=(r-+(D>>>0))*1.0e9}while(r!=0.0);q=p;p=c[ha>>2]|0;if((p|0)>0){t=G;while(1){u=(p|0)>29?29:p;s=q+-4|0;do if(s>>>0>>0)s=t;else{p=0;do{D=jq(c[s>>2]|0,0,u|0)|0;D=iq(D|0,C|0,p|0,0)|0;p=C;B=rq(D|0,p|0,1e9,0)|0;c[s>>2]=B;p=qq(D|0,p|0,1e9,0)|0;s=s+-4|0}while(s>>>0>=t>>>0);if(!p){s=t;break}s=t+-4|0;c[s>>2]=p}while(0);while(1){if(q>>>0<=s>>>0)break;p=q+-4|0;if(!(c[p>>2]|0))q=p;else break}p=(c[ha>>2]|0)-u|0;c[ha>>2]=p;if((p|0)>0)t=s;else break}}else s=G;if((p|0)<0){z=((f+25|0)/9|0)+1|0;A=(E|0)==102;w=s;while(1){x=0-p|0;x=(x|0)>9?9:x;do if(w>>>0>>0){p=(1<>>x;s=0;u=w;do{D=c[u>>2]|0;c[u>>2]=(D>>>x)+s;s=_(D&p,t)|0;u=u+4|0}while(u>>>0>>0);p=(c[w>>2]|0)==0?w+4|0:w;if(!s){s=p;break}c[q>>2]=s;s=p;q=q+4|0}else s=(c[w>>2]|0)==0?w+4|0:w;while(0);p=A?G:s;q=(q-p>>2|0)>(z|0)?p+(z<<2)|0:q;p=(c[ha>>2]|0)+x|0;c[ha>>2]=p;if((p|0)>=0){A=s;break}else w=s}}else A=s;do if(A>>>0>>0){p=(F-A>>2)*9|0;t=c[A>>2]|0;if(t>>>0<10)break;else s=10;do{s=s*10|0;p=p+1|0}while(t>>>0>=s>>>0)}else p=0;while(0);B=(E|0)==103;D=(f|0)!=0;s=f-((E|0)!=102?p:0)+((D&B)<<31>>31)|0;if((s|0)<(((q-F>>2)*9|0)+-9|0)){u=s+9216|0;s=G+4+(((u|0)/9|0)+-1024<<2)|0;u=((u|0)%9|0)+1|0;if((u|0)<9){t=10;do{t=t*10|0;u=u+1|0}while((u|0)!=9)}else t=10;x=c[s>>2]|0;z=(x>>>0)%(t>>>0)|0;u=(s+4|0)==(q|0);do if(u&(z|0)==0)t=A;else{y=(((x>>>0)/(t>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;w=(t|0)/2|0;if(z>>>0>>0)r=.5;else r=u&(z|0)==(w|0)?1.0:1.5;do if(H){if((a[I>>0]|0)!=45)break;y=-y;r=-r}while(0);u=x-z|0;c[s>>2]=u;if(!(y+r!=y)){t=A;break}E=u+t|0;c[s>>2]=E;if(E>>>0>999999999){p=A;while(1){t=s+-4|0;c[s>>2]=0;if(t>>>0

>>0){p=p+-4|0;c[p>>2]=0}E=(c[t>>2]|0)+1|0;c[t>>2]=E;if(E>>>0>999999999)s=t;else{w=p;s=t;break}}}else w=A;p=(F-w>>2)*9|0;u=c[w>>2]|0;if(u>>>0<10){t=w;break}else t=10;do{t=t*10|0;p=p+1|0}while(u>>>0>=t>>>0);t=w}while(0);E=s+4|0;A=t;q=q>>>0>E>>>0?E:q}x=0-p|0;while(1){if(q>>>0<=A>>>0){z=0;E=q;break}s=q+-4|0;if(!(c[s>>2]|0))q=s;else{z=1;E=q;break}}do if(B){f=(D&1^1)+f|0;if((f|0)>(p|0)&(p|0)>-5){v=v+-1|0;f=f+-1-p|0}else{v=v+-2|0;f=f+-1|0}q=J&8;if(q|0)break;do if(z){q=c[E+-4>>2]|0;if(!q){s=9;break}if(!((q>>>0)%10|0)){t=10;s=0}else{s=0;break}do{t=t*10|0;s=s+1|0}while(!((q>>>0)%(t>>>0)|0|0))}else s=9;while(0);q=((E-F>>2)*9|0)+-9|0;if((v|32|0)==102){q=q-s|0;q=(q|0)<0?0:q;f=(f|0)<(q|0)?f:q;q=0;break}else{q=q+p-s|0;q=(q|0)<0?0:q;f=(f|0)<(q|0)?f:q;q=0;break}}else q=J&8;while(0);w=f|q;t=(w|0)!=0&1;u=(v|32|0)==102;if(u){p=(p|0)>0?p:0;v=0}else{s=(p|0)<0?x:p;s=Xo(s,((s|0)<0)<<31>>31,aa)|0;if((da-s|0)<2)do{s=s+-1|0;a[s>>0]=48}while((da-s|0)<2);a[s+-1>>0]=(p>>31&2)+43;F=s+-2|0;a[F>>0]=v;p=da-F|0;v=F}x=H+1+f+t+p|0;Zo(e,32,L,x,J);if(!(c[e>>2]&32))Uo(I,H,e)|0;Zo(e,48,L,x,J^65536);do if(u){s=A>>>0>G>>>0?G:A;p=s;do{q=Xo(c[p>>2]|0,0,T)|0;do if((p|0)==(s|0)){if((q|0)!=(T|0))break;a[V>>0]=48;q=V}else{if(q>>>0<=ga>>>0)break;eq(ga|0,48,q-Z|0)|0;do q=q+-1|0;while(q>>>0>ga>>>0)}while(0);if(!(c[e>>2]&32))Uo(q,U-q|0,e)|0;p=p+4|0}while(p>>>0<=G>>>0);do if(w|0){if(c[e>>2]&32|0)break;Uo(45054,1,e)|0}while(0);if((f|0)>0&p>>>0>>0){q=p;while(1){p=Xo(c[q>>2]|0,0,T)|0;if(p>>>0>ga>>>0){eq(ga|0,48,p-Z|0)|0;do p=p+-1|0;while(p>>>0>ga>>>0)}if(!(c[e>>2]&32))Uo(p,(f|0)>9?9:f,e)|0;q=q+4|0;p=f+-9|0;if(!((f|0)>9&q>>>0>>0)){f=p;break}else f=p}}Zo(e,48,f+9|0,9,0)}else{u=z?E:A+4|0;if((f|0)>-1){t=(q|0)==0;s=A;do{p=Xo(c[s>>2]|0,0,T)|0;if((p|0)==(T|0)){a[V>>0]=48;p=V}do if((s|0)==(A|0)){q=p+1|0;if(!(c[e>>2]&32))Uo(p,1,e)|0;if(t&(f|0)<1){p=q;break}if(c[e>>2]&32|0){p=q;break}Uo(45054,1,e)|0;p=q}else{if(p>>>0<=ga>>>0)break;eq(ga|0,48,p+$|0)|0;do p=p+-1|0;while(p>>>0>ga>>>0)}while(0);q=U-p|0;if(!(c[e>>2]&32))Uo(p,(f|0)>(q|0)?q:f,e)|0;f=f-q|0;s=s+4|0}while(s>>>0>>0&(f|0)>-1)}Zo(e,48,f+18|0,18,0);if(c[e>>2]&32|0)break;Uo(v,da-v|0,e)|0}while(0);Zo(e,32,L,x,J^8192);f=(x|0)<(L|0)?L:x}else{u=(v&32|0)!=0;t=r!=r|0.0!=0.0;p=t?0:H;s=p+3|0;Zo(e,32,L,s,q);f=c[e>>2]|0;if(!(f&32)){Uo(I,p,e)|0;f=c[e>>2]|0}if(!(f&32))Uo(t?(u?45050:45037):u?45029:45033,3,e)|0;Zo(e,32,L,s,J^8192);f=(s|0)<(L|0)?L:s}while(0);p=f;z=K;continue a}default:{f=z;q=J;v=t;x=0;w=43101;p=O}}while(0);g:do if((M|0)==64){q=ea;p=c[q>>2]|0;q=c[q+4>>2]|0;s=v&32;if(!((p|0)==0&(q|0)==0)){f=O;do{f=f+-1|0;a[f>>0]=d[43085+(p&15)>>0]|s;p=hq(p|0,q|0,4)|0;q=C}while(!((p|0)==0&(q|0)==0));M=ea;if((u&8|0)==0|(c[M>>2]|0)==0&(c[M+4>>2]|0)==0){p=u;u=0;s=43101;M=77}else{p=u;u=2;s=43101+(v>>4)|0;M=77}}else{f=O;p=u;u=0;s=43101;M=77}}else if((M|0)==76){f=Xo(f,p,O)|0;p=J;u=q;M=77}else if((M|0)==82){M=0;J=No(p,0,t)|0;I=(J|0)==0;f=p;v=I?t:J-p|0;x=0;w=43101;p=I?p+t|0:J}else if((M|0)==86){M=0;q=0;p=0;u=f;while(1){s=c[u>>2]|0;if(!s)break;p=_o(ia,s)|0;if((p|0)<0|p>>>0>(t-q|0)>>>0)break;q=p+q|0;if(t>>>0>q>>>0)u=u+4|0;else break}if((p|0)<0){n=-1;break a}Zo(e,32,L,q,J);if(!q){f=0;M=97}else{s=0;while(1){p=c[f>>2]|0;if(!p){f=q;M=97;break g}p=_o(ia,p)|0;s=p+s|0;if((s|0)>(q|0)){f=q;M=97;break g}if(!(c[e>>2]&32))Uo(ia,p,e)|0;if(s>>>0>=q>>>0){f=q;M=97;break}else f=f+4|0}}}while(0);if((M|0)==97){M=0;Zo(e,32,L,f,J^8192);p=(L|0)>(f|0)?L:f;z=K;continue}if((M|0)==77){M=0;q=(t|0)>-1?p&-65537:p;p=ea;p=(c[p>>2]|0)!=0|(c[p+4>>2]|0)!=0;if((t|0)!=0|p){v=(p&1^1)+(W-f)|0;v=(t|0)>(v|0)?t:v;x=u;w=s;p=O}else{f=O;v=0;x=u;w=s;p=O}}u=p-f|0;s=(v|0)<(u|0)?u:v;t=x+s|0;p=(L|0)<(t|0)?t:L;Zo(e,32,p,t,q);if(!(c[e>>2]&32))Uo(w,x,e)|0;Zo(e,48,p,t,q^65536);Zo(e,48,s,u,0);if(!(c[e>>2]&32))Uo(f,u,e)|0;Zo(e,32,p,t,q^8192);z=K}h:do if((M|0)==244)if(!e)if(o){n=1;while(1){o=c[m+(n<<2)>>2]|0;if(!o)break;Wo(l+(n<<3)|0,o,g);n=n+1|0;if((n|0)>=10){n=1;break h}}if((n|0)<10)while(1){if(c[m+(n<<2)>>2]|0){n=-1;break h}n=n+1|0;if((n|0)>=10){n=1;break}}else n=1}else n=0;while(0);i=ka;return n|0}function Uo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(Vo(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){i=e+20|0;f=c[i>>2]|0;h=f;if((g-f|0)>>>0>>0){f=pb[c[e+36>>2]&15](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){f=d;while(1){if(!f){g=h;f=0;break b}g=f+-1|0;if((a[b+g>>0]|0)==10)break;else f=g}if((pb[c[e+36>>2]&15](e,b,f)|0)>>>0>>0)break a;d=d-f|0;b=b+f|0;g=c[i>>2]|0}else{g=h;f=0}while(0);fq(g|0,b|0,d|0)|0;c[i>>2]=(c[i>>2]|0)+d;f=f+d|0}while(0);return f|0}function Vo(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;d=c[b+44>>2]|0;c[b+28>>2]=d;c[b+20>>2]=d;c[b+16>>2]=d+(c[b+48>>2]|0);d=0}else{c[b>>2]=d|32;d=-1}return d|0}function Wo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function Xo(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295)while(1){e=rq(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e|48;e=qq(b|0,c|0,10,0)|0;if(c>>>0>9|(c|0)==9&b>>>0>4294967295){b=e;c=C}else{b=e;break}}if(b)while(1){d=d+-1|0;a[d>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return d|0}function Yo(b){b=b|0;var c=0,e=0;c=0;while(1){if((d[43111+c>>0]|0)==(b|0)){e=2;break}c=c+1|0;if((c|0)==87){c=87;b=43199;e=5;break}}if((e|0)==2)if(!c)b=43199;else{b=43199;e=5}if((e|0)==5)while(1){e=b;while(1){b=e+1|0;if(!(a[e>>0]|0))break;else e=b}c=c+-1|0;if(!c)break;else e=5}return b|0}function Zo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,k=0;k=i;i=i+256|0;if((i|0)>=(j|0))ba();h=k;do if((d|0)>(e|0)&(f&73728|0)==0){f=d-e|0;eq(h|0,b|0,(f>>>0>256?256:f)|0)|0;b=c[a>>2]|0;g=(b&32|0)==0;if(f>>>0>255){e=d-e|0;do{if(g){Uo(h,256,a)|0;b=c[a>>2]|0}f=f+-256|0;g=(b&32|0)==0}while(f>>>0>255);if(g)f=e&255;else break}else if(!g)break;Uo(h,f,a)|0}while(0);i=k;return}function _o(a,b){a=a|0;b=b|0;if(!a)a=0;else a=$o(a,b,0)|0;return a|0}function $o(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(eo()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function ap(a,b){a=+a;b=b|0;return +(+bp(a,b))}function bp(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;f=hq(d|0,e|0,52)|0;f=f&2047;switch(f|0){case 0:{if(a!=0.0){a=+bp(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=f+-1022;c[k>>2]=d;c[k+4>>2]=e&-2146435073|1071644672;a=+h[k>>3]}}return +a}function cp(a){a=a|0;return 0}function dp(b,c){b=b|0;c=c|0;var d=0,e=0;e=a[b>>0]|0;d=a[c>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=d<<24>>24)c=e;else{do{b=b+1|0;c=c+1|0;e=a[b>>0]|0;d=a[c>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=d<<24>>24));c=e}return (c&255)-(d&255)|0}function ep(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;if((i|0)>=(j|0))ba();d=b;c[d>>2]=a;a=cb(6,d|0)|0;a=co((a|0)==-4?-115:a)|0;i=b;return a|0}function fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;if((i|0)>=(j|0))ba();f=e;g=e+16|0;c[g>>2]=d;h=(c[g>>2]|0)+(4-1)&~(4-1);d=c[h>>2]|0;c[g>>2]=h+4;c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=d;d=co(db(5,f|0)|0)|0;i=e;return d|0}function gp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0.0;M=i;i=i+512|0;if((i|0)>=(j|0))ba();I=M;switch(e|0){case 0:{L=24;K=-149;B=4;break}case 1:{L=53;K=-1074;B=4;break}case 2:{L=53;K=-1074;B=4;break}default:g=0.0}a:do if((B|0)==4){F=b+4|0;E=b+100|0;do{e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0}while((so(e)|0)!=0);b:do switch(e|0){case 43:case 45:{h=1-(((e|0)==45&1)<<1)|0;e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0;J=h;break b}else{e=po(b)|0;J=h;break b}}default:J=1}while(0);h=e;e=0;do{if((h|32|0)!=(a[45041+e>>0]|0))break;do if(e>>>0<7){h=c[F>>2]|0;if(h>>>0<(c[E>>2]|0)>>>0){c[F>>2]=h+1;h=d[h>>0]|0;break}else{h=po(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{B=23;break}default:{l=(f|0)!=0;if(l&e>>>0>3)if((e|0)==8)break c;else{B=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[45050+e>>0]|0))break d;do if(e>>>0<2){h=c[F>>2]|0;if(h>>>0<(c[E>>2]|0)>>>0){c[F>>2]=h+1;h=d[h>>0]|0;break}else{h=po(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;if((e|0)==40)e=1;else{if(!(c[E>>2]|0)){g=r;break a}c[F>>2]=(c[F>>2]|0)+-1;g=r;break a}while(1){h=c[F>>2]|0;if(h>>>0<(c[E>>2]|0)>>>0){c[F>>2]=h+1;h=d[h>>0]|0}else h=po(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=r;break a}h=(c[E>>2]|0)==0;if(!h)c[F>>2]=(c[F>>2]|0)+-1;if(!l){c[(eo()|0)>>2]=22;no(b,0);g=0.0;break a}if(!e){g=r;break a}while(1){e=e+-1|0;if(!h)c[F>>2]=(c[F>>2]|0)+-1;if(!e){g=r;break a}}}case 0:{do if((h|0)==48){e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;if((e|32|0)!=120){if(!(c[E>>2]|0)){e=48;break}c[F>>2]=(c[F>>2]|0)+-1;e=48;break}e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0;l=0}else{e=po(b)|0;l=0}e:while(1){switch(e|0){case 46:{B=74;break e}case 48:break;default:{z=0;m=0;y=0;h=0;o=l;p=0;x=0;n=1.0;l=0;g=0.0;break e}}e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0;l=1;continue}else{e=po(b)|0;l=1;continue}}if((B|0)==74){e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;if((e|0)==48){l=0;h=0;do{e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;l=iq(l|0,h|0,-1,-1)|0;h=C}while((e|0)==48);z=0;m=0;y=l;o=1;p=1;x=0;n=1.0;l=0;g=0.0}else{z=0;m=0;y=0;h=0;o=l;p=1;x=0;n=1.0;l=0;g=0.0}}while(1){v=e+-48|0;q=e|32;if(v>>>0>=10){w=(e|0)==46;if(!(w|(q+-97|0)>>>0<6)){q=y;v=z;break}if(w)if(!p){w=m;h=z;v=z;p=1;q=x;k=n}else{q=y;v=z;e=46;break}else B=86}else B=86;if((B|0)==86){B=0;e=(e|0)>57?q+-87|0:v;do if(!((z|0)<0|(z|0)==0&m>>>0<8)){if((z|0)<0|(z|0)==0&m>>>0<14){u=n*.0625;q=x;k=u;g=g+u*+(e|0);break}if((x|0)!=0|(e|0)==0){q=x;k=n}else{q=1;k=n;g=g+n*.5}}else{q=x;k=n;l=e+(l<<4)|0}while(0);m=iq(m|0,z|0,1,0)|0;w=y;v=C;o=1}e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;z=v;y=w;e=d[e>>0]|0;x=q;n=k;continue}else{z=v;y=w;e=po(b)|0;x=q;n=k;continue}}if(!o){e=(c[E>>2]|0)==0;if(!e)c[F>>2]=(c[F>>2]|0)+-1;if(f){if(!e?(A=c[F>>2]|0,c[F>>2]=A+-1,p|0):0)c[F>>2]=A+-2}else no(b,0);g=+(J|0)*0.0;break a}o=(p|0)==0;p=o?m:q;o=o?v:h;if((v|0)<0|(v|0)==0&m>>>0<8){h=v;do{l=l<<4;m=iq(m|0,h|0,1,0)|0;h=C}while((h|0)<0|(h|0)==0&m>>>0<8)}if((e|32|0)==112){h=hp(b,f)|0;e=C;if((h|0)==0&(e|0)==-2147483648){if(!f){no(b,0);g=0.0;break a}if(!(c[E>>2]|0)){h=0;e=0}else{c[F>>2]=(c[F>>2]|0)+-1;h=0;e=0}}}else if(!(c[E>>2]|0)){h=0;e=0}else{c[F>>2]=(c[F>>2]|0)+-1;h=0;e=0}I=jq(p|0,o|0,2)|0;I=iq(I|0,C|0,-32,-1)|0;e=iq(I|0,C|0,h|0,e|0)|0;h=C;if(!l){g=+(J|0)*0.0;break a}if((h|0)>0|(h|0)==0&e>>>0>(0-K|0)>>>0){c[(eo()|0)>>2]=34;g=+(J|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}I=K+-106|0;H=((I|0)<0)<<31>>31;if((h|0)<(H|0)|(h|0)==(H|0)&e>>>0>>0){c[(eo()|0)>>2]=34;g=+(J|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((l|0)>-1){do{H=!(g>=.5);I=H&1|l<<1;l=I^1;g=g+(H?g:g+-1.0);e=iq(e|0,h|0,-1,-1)|0;h=C}while((I|0)>-1);m=e;n=g}else{m=e;n=g}e=cq(32,0,K|0,((K|0)<0)<<31>>31|0)|0;e=iq(m|0,h|0,e|0,C|0)|0;K=C;if(0>(K|0)|0==(K|0)&L>>>0>e>>>0)if((e|0)<0){e=0;B=127}else B=125;else{e=L;B=125}if((B|0)==125)if((e|0)<53)B=127;else{h=e;k=+(J|0);g=0.0}if((B|0)==127){g=+(J|0);h=e;k=g;g=+jp(+ip(1.0,84-e|0),g)}L=(l&1|0)==0&(n!=0.0&(h|0)<32);g=k*(L?0.0:n)+(g+k*+(((L&1)+l|0)>>>0))-g;if(!(g!=0.0))c[(eo()|0)>>2]=34;g=+kp(g,m);break a}else e=h;while(0);G=K+L|0;H=0-G|0;l=0;f:while(1){switch(e|0){case 46:{B=138;break f}case 48:break;default:{h=0;q=0;p=0;break f}}e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0;l=1;continue}else{e=po(b)|0;l=1;continue}}if((B|0)==138){e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;if((e|0)==48){h=0;e=0;while(1){h=iq(h|0,e|0,-1,-1)|0;l=C;e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;if((e|0)==48)e=l;else{q=l;l=1;p=1;break}}}else{h=0;q=0;p=1}}c[I>>2]=0;o=e+-48|0;m=(e|0)==46;g:do if(m|o>>>0<10){D=I+496|0;z=0;w=0;x=m;B=q;v=l;A=p;l=0;m=0;p=0;h:while(1){do if(x)if(!A){h=z;q=w;A=1}else{q=B;e=z;o=w;break h}else{x=iq(z|0,w|0,1,0)|0;w=C;y=(e|0)!=48;if((m|0)>=125){if(!y){q=B;z=x;break}c[D>>2]=c[D>>2]|1;q=B;z=x;break}q=I+(m<<2)|0;if(l)o=e+-48+((c[q>>2]|0)*10|0)|0;c[q>>2]=o;l=l+1|0;o=(l|0)==9;q=B;z=x;v=1;l=o?0:l;m=(o&1)+m|0;p=y?x:p}while(0);e=c[F>>2]|0;if(e>>>0<(c[E>>2]|0)>>>0){c[F>>2]=e+1;e=d[e>>0]|0}else e=po(b)|0;o=e+-48|0;x=(e|0)==46;if(!(x|o>>>0<10)){o=A;B=161;break g}else B=q}v=(v|0)!=0;B=169}else{z=0;w=0;v=l;o=p;l=0;m=0;p=0;B=161}while(0);do if((B|0)==161){D=(o|0)==0;h=D?z:h;q=D?w:q;v=(v|0)!=0;if(!((e|32|0)==101&v))if((e|0)>-1){e=z;o=w;B=169;break}else{e=z;o=w;B=171;break}o=hp(b,f)|0;e=C;if((o|0)==0&(e|0)==-2147483648){if(!f){no(b,0);g=0.0;break}if(!(c[E>>2]|0)){o=0;e=0}else{c[F>>2]=(c[F>>2]|0)+-1;o=0;e=0}}h=iq(o|0,e|0,h|0,q|0)|0;v=z;q=C;o=w;B=173}while(0);if((B|0)==169)if(c[E>>2]|0){c[F>>2]=(c[F>>2]|0)+-1;if(v){v=e;B=173}else B=172}else B=171;if((B|0)==171)if(v){v=e;B=173}else B=172;do if((B|0)==172){c[(eo()|0)>>2]=22;no(b,0);g=0.0}else if((B|0)==173){e=c[I>>2]|0;if(!e){g=+(J|0)*0.0;break}if(((o|0)<0|(o|0)==0&v>>>0<10)&((h|0)==(v|0)&(q|0)==(o|0))?L>>>0>30|(e>>>L|0)==0:0){g=+(J|0)*+(e>>>0);break}b=(K|0)/-2|0;F=((b|0)<0)<<31>>31;if((q|0)>(F|0)|(q|0)==(F|0)&h>>>0>b>>>0){c[(eo()|0)>>2]=34;g=+(J|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}b=K+-106|0;F=((b|0)<0)<<31>>31;if((q|0)<(F|0)|(q|0)==(F|0)&h>>>0>>0){c[(eo()|0)>>2]=34;g=+(J|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(l){if((l|0)<9){o=I+(m<<2)|0;e=c[o>>2]|0;do{e=e*10|0;l=l+1|0}while((l|0)!=9);c[o>>2]=e}m=m+1|0}if((p|0)<9?(p|0)<=(h|0)&(h|0)<18:0){if((h|0)==9){g=+(J|0)*+((c[I>>2]|0)>>>0);break}if((h|0)<9){g=+(J|0)*+((c[I>>2]|0)>>>0)/+(c[9740+(8-h<<2)>>2]|0);break}b=L+27+(_(h,-3)|0)|0;e=c[I>>2]|0;if((b|0)>30|(e>>>b|0)==0){g=+(J|0)*+(e>>>0)*+(c[9740+(h+-10<<2)>>2]|0);break}}e=(h|0)%9|0;if(!e){l=0;e=0}else{v=(h|0)>-1?e:e+9|0;o=c[9740+(8-v<<2)>>2]|0;if(m){p=1e9/(o|0)|0;l=0;e=0;q=0;do{E=I+(q<<2)|0;F=c[E>>2]|0;b=((F>>>0)/(o>>>0)|0)+e|0;c[E>>2]=b;e=_((F>>>0)%(o>>>0)|0,p)|0;b=(q|0)==(l|0)&(b|0)==0;q=q+1|0;h=b?h+-9|0:h;l=b?q&127:l}while((q|0)!=(m|0));if(e){c[I+(m<<2)>>2]=e;m=m+1|0}}else{l=0;m=0}e=0;h=9-v+h|0}i:while(1){w=(h|0)<18;x=(h|0)==18;y=I+(l<<2)|0;do{if(!w){if(!x){z=m;break i}if((c[y>>2]|0)>>>0>=9007199){h=18;z=m;break i}}o=0;p=m+127|0;while(1){v=p&127;q=I+(v<<2)|0;p=jq(c[q>>2]|0,0,29)|0;p=iq(p|0,C|0,o|0,0)|0;o=C;if(o>>>0>0|(o|0)==0&p>>>0>1e9){b=qq(p|0,o|0,1e9,0)|0;p=rq(p|0,o|0,1e9,0)|0;o=b}else o=0;c[q>>2]=p;b=(v|0)==(l|0);m=(v|0)!=(m+127&127|0)|b?m:(p|0)==0?v:m;if(b)break;else p=v+-1|0}e=e+-29|0}while((o|0)==0);l=l+127&127;if((l|0)==(m|0)){b=m+127&127;m=I+((m+126&127)<<2)|0;c[m>>2]=c[m>>2]|c[I+(b<<2)>>2];m=b}c[I+(l<<2)>>2]=o;h=h+9|0}j:while(1){m=z+1&127;y=I+((z+127&127)<<2)|0;while(1){w=(h|0)==18;x=(h|0)>27?9:1;v=w^1;while(1){p=l&127;q=(p|0)==(z|0);do if(!q){o=c[I+(p<<2)>>2]|0;if(o>>>0<9007199){B=219;break}if(o>>>0>9007199)break;o=l+1&127;if((o|0)==(z|0)){B=219;break}o=c[I+(o<<2)>>2]|0;if(o>>>0<254740991){B=219;break}if(!(o>>>0>254740991|v)){h=p;m=z;break j}}else B=219;while(0);if((B|0)==219?(B=0,w):0){B=220;break j}e=e+x|0;if((l|0)==(z|0))l=z;else break}v=(1<>>x;p=l;o=0;q=l;while(1){F=I+(q<<2)|0;b=c[F>>2]|0;l=(b>>>x)+o|0;c[F>>2]=l;o=_(b&v,w)|0;l=(q|0)==(p|0)&(l|0)==0;q=q+1&127;h=l?h+-9|0:h;l=l?q:p;if((q|0)==(z|0))break;else p=l}if(!o)continue;if((m|0)!=(l|0))break;c[y>>2]=c[y>>2]|1}c[I+(z<<2)>>2]=o;z=m}if((B|0)==220)if(q){c[I+(m+-1<<2)>>2]=0;h=z}else{h=p;m=z}g=+((c[I+(h<<2)>>2]|0)>>>0);h=l+1&127;if((h|0)==(m|0)){m=l+2&127;c[I+(m+-1<<2)>>2]=0}u=+(J|0);k=u*(g*1.0e9+ +((c[I+(h<<2)>>2]|0)>>>0));w=e+53|0;q=w-K|0;v=(q|0)<(L|0);h=v&1;p=v?((q|0)<0?0:q):L;if((p|0)<53){O=+jp(+ip(1.0,105-p|0),k);n=+lp(k,+ip(1.0,53-p|0));t=O;g=n;n=O+(k-n)}else{t=0.0;g=0.0;n=k}o=l+2&127;do if((o|0)==(m|0))k=g;else{o=c[I+(o<<2)>>2]|0;do if(o>>>0>=5e8){if(o>>>0>5e8){g=u*.75+g;break}if((l+3&127|0)==(m|0)){g=u*.5+g;break}else{g=u*.75+g;break}}else{if((o|0)==0?(l+3&127|0)==(m|0):0)break;g=u*.25+g}while(0);if((53-p|0)<=1){k=g;break}if(+lp(g,1.0)!=0.0){k=g;break}k=g+1.0}while(0);g=n+k-t;do if((w&2147483647|0)>(-2-G|0)){if(+N(+g)>=9007199254740992.0){h=v&(p|0)==(q|0)?0:h;e=e+1|0;g=g*.5}if((e+50|0)<=(H|0)?!(k!=0.0&(h|0)!=0):0)break;c[(eo()|0)>>2]=34}while(0);g=+kp(g,e)}while(0);break a}default:{if(c[E>>2]|0)c[F>>2]=(c[F>>2]|0)+-1;c[(eo()|0)>>2]=22;no(b,0);g=0.0;break a}}}}while(0);if((B|0)==23){h=(c[E>>2]|0)==0;if(!h)c[F>>2]=(c[F>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[F>>2]=(c[F>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(J|0)*s}while(0);i=M;return +g}function hp(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=a+4|0;e=c[i>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=po(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=po(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[j>>2]|0)!=0:0){c[i>>2]=(c[i>>2]|0)+-1;h=f}else h=f;break}default:h=0}if((e+-48|0)>>>0>9)if(!(c[j>>2]|0)){f=-2147483648;e=0}else{c[i>>2]=(c[i>>2]|0)+-1;f=-2147483648;e=0}else{f=0;do{f=e+-48+(f*10|0)|0;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=po(a)|0}while((e+-48|0)>>>0<10&(f|0)<214748364);b=((f|0)<0)<<31>>31;if((e+-48|0)>>>0<10){do{b=pq(f|0,b|0,10,0)|0;f=C;e=iq(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;f=iq(e|0,C|0,b|0,f|0)|0;b=C;e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=po(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&f>>>0<2061584302));g=f}else g=f;if((e+-48|0)>>>0<10)do{e=c[i>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[i>>2]=e+1;e=d[e>>0]|0}else e=po(a)|0}while((e+-48|0)>>>0<10);if(c[j>>2]|0)c[i>>2]=(c[i>>2]|0)+-1;a=(h|0)!=0;e=cq(0,0,g|0,b|0)|0;f=a?C:b;e=a?e:g}C=f;return e|0}function ip(a,b){a=+a;b=b|0;var d=0;if((b|0)>1023){a=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){d=b+-2046|0;d=(d|0)>1023?1023:d;a=a*8988465674311579538646525.0e283}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){d=b+2044|0;d=(d|0)<-1022?-1022:d;a=a*2.2250738585072014e-308}}else d=b;d=jq(d+1023|0,0,52)|0;b=C;c[k>>2]=d;c[k+4>>2]=b;return +(a*+h[k>>3])}function jp(a,b){a=+a;b=+b;return +(+yo(a,b))}function kp(a,b){a=+a;b=b|0;return +(+ip(a,b))}function lp(a,b){a=+a;b=+b;return +(+mp(a,b))}function mp(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;h[k>>3]=a;d=c[k>>2]|0;m=c[k+4>>2]|0;h[k>>3]=b;n=c[k>>2]|0;o=c[k+4>>2]|0;e=hq(d|0,m|0,52)|0;e=e&2047;j=hq(n|0,o|0,52)|0;j=j&2047;p=m&-2147483648;i=jq(n|0,o|0,1)|0;l=C;a:do if(!((i|0)==0&(l|0)==0)?(r=+N(+b),h[k>>3]=r,g=c[k+4>>2]|0,!(g>>>0>2146435072|(g|0)==2146435072&(c[k>>2]|0)>>>0>0|(e|0)==2047)):0){f=jq(d|0,m|0,1)|0;g=C;if(!(g>>>0>l>>>0|(g|0)==(l|0)&f>>>0>i>>>0))return +((f|0)==(i|0)&(g|0)==(l|0)?a*0.0:a);if(!e){e=jq(d|0,m|0,12)|0;f=C;if((f|0)>-1|(f|0)==-1&e>>>0>4294967295){g=e;e=0;do{e=e+-1|0;g=jq(g|0,f|0,1)|0;f=C}while((f|0)>-1|(f|0)==-1&g>>>0>4294967295)}else e=0;d=jq(d|0,m|0,1-e|0)|0;f=C}else f=m&1048575|1048576;if(!j){g=jq(n|0,o|0,12)|0;i=C;if((i|0)>-1|(i|0)==-1&g>>>0>4294967295){j=0;do{j=j+-1|0;g=jq(g|0,i|0,1)|0;i=C}while((i|0)>-1|(i|0)==-1&g>>>0>4294967295)}else j=0;n=jq(n|0,o|0,1-j|0)|0;m=C}else m=o&1048575|1048576;l=cq(d|0,f|0,n|0,m|0)|0;i=C;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;b:do if((e|0)>(j|0)){while(1){if(g)if((d|0)==(n|0)&(f|0)==(m|0))break;else{d=l;f=i}d=jq(d|0,f|0,1)|0;f=C;e=e+-1|0;l=cq(d|0,f|0,n|0,m|0)|0;i=C;g=(i|0)>-1|(i|0)==-1&l>>>0>4294967295;if((e|0)<=(j|0))break b}b=a*0.0;break a}while(0);if(g)if((d|0)==(n|0)&(f|0)==(m|0)){b=a*0.0;break}else{f=i;d=l}if(f>>>0<1048576|(f|0)==1048576&d>>>0<0)do{d=jq(d|0,f|0,1)|0;f=C;e=e+-1|0}while(f>>>0<1048576|(f|0)==1048576&d>>>0<0);if((e|0)>0){o=iq(d|0,f|0,0,-1048576)|0;d=C;e=jq(e|0,0,52)|0;d=d|C;e=o|e}else{e=hq(d|0,f|0,1-e|0)|0;d=C}c[k>>2]=e;c[k+4>>2]=d|p;b=+h[k>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function np(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=b;b=f;while(1){if(!(a[d>>0]|0))break a;d=d+1|0;b=d;if(!(b&3)){b=d;e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function op(){return 9772}function pp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;if((i|0)>=(j|0))ba();g=f;c[g>>2]=e;e=Qo(a,b,d,g)|0;i=f;return e|0}function qp(a){a=+a;var b=0,d=0,e=0.0;d=(g[k>>2]=a,c[k>>2]|0)>>>31;e=+N(+a);b=(g[k>>2]=e,c[k>>2]|0);do if(b>>>0<=2139095039)if(b>>>0<1062731776)if(b>>>0<830472192){a=(a*8.0+a*1.0270333290100098)*.125;break}else{e=a*a;a=(e*(e*(e*(-.005770270247012377-e*2.3763017452438362e-05)+-.028481749817728996)+-.32504209876060486)+.12837916612625122)/(e*(e*(e*(e*(1.324947370449081e-04-e*3.9602282413397916e-06)+5.0813062116503716e-03)+.06502225250005722)+.3979172110557556)+1.0)*a+a;break}else{if(b>>>0<1086324736)a=1.0-+rp(b,a);else a=1.0;a=d|0?-a:a;break}else a=1.0/a+ +(1-(d<<1)|0);while(0);return +a}function rp(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0.0,h=0.0;e=+N(+b);if(a>>>0<1067450368){b=e+-1.0;b=.15493708848953247-(b*(b*(b*(b*(b*(.03547830507159233-b*.002166375517845154)+-.11089469492435455)+.31834661960601807)+-.3722078800201416)+.41485610604286194)+-2.3621185682713985e-03)/(b*(b*(b*(b*(b*(b*.011984500102698803+.01363708358258009)+.12617121636867523)+.07182865589857101)+.5403979420661926)+.10642088204622269)+1.0)}else{f=1.0/(e*e);if(a>>>0<1077336941){b=f*(f*(f*(f*(f*(f*(6.570249557495117-f*.06042441353201866)+108.63500213623047)+429.0081481933594)+645.3872680664062)+434.5658874511719)+137.6577606201172)+19.65127182006836;d=f*(f*(f*(f*(f*(f*(-81.28743743896484-f*9.814329147338867)+-184.60508728027344)+-162.39666748046875)+-62.37533187866211)+-10.558626174926758)+-.6938585638999939)+-.009864944033324718}else{b=f*(f*(f*(f*(f*(474.5285339355469-f*22.44095230102539)+2553.05029296875)+3199.858154296875)+1536.7296142578125)+325.7925109863281)+30.33806037902832;d=f*(f*(f*(f*(f*(-1025.0950927734375-f*483.5191955566406)+-637.5664672851562)+-160.63638305664062)+-17.75795555114746)+-.7992832660675049)+-.009864943102002144}h=(c[k>>2]=(g[k>>2]=e,c[k>>2]|0)&-8192,+g[k>>2]);b=+X(+(-.5625-h*h))*+X(+((h-e)*(e+h)+d/(f*b+1.0)))/e}return +b}function sp(a){a=+a;var b=0,d=0,e=0;h[k>>3]=a;b=c[k>>2]|0;d=c[k+4>>2]|0;e=hq(b|0,d|0,52)|0;e=e&2047;switch(e|0){case 0:{b=jq(b|0,d|0,12)|0;d=C;if(!((b|0)==0&(d|0)==0))if((d|0)>-1|(d|0)==-1&b>>>0>4294967295){e=b;b=-1023;do{b=b+-1|0;e=jq(e|0,d|0,1)|0;d=C}while((d|0)>-1|(d|0)==-1&e>>>0>4294967295)}else b=-1023;else b=-2147483648;break}case 2047:{b=(b|0)!=0|(d&1048575|0)!=0?-2147483648:2147483647;break}default:b=e+-1023|0}return b|0}function tp(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0.0,i=0;h[k>>3]=a;d=c[k>>2]|0;e=c[k+4>>2]|0;g=+N(+a);h[k>>3]=g;f=c[k+4>>2]|0;do if(!(f>>>0>2146435072|(f|0)==2146435072&(c[k>>2]|0)>>>0>0)){g=+N(+b);h[k>>3]=g;f=c[k+4>>2]|0;if(!(f>>>0>2146435072|(f|0)==2146435072&(c[k>>2]|0)>>>0>0)){h[k>>3]=b;i=c[k>>2]|0;f=c[k+4>>2]|0;d=hq(d|0,e|0,63)|0;f=hq(i|0,f|0,63)|0;if((d|0)==(f|0)){a=a>2]=a,c[k>>2]|0);e=+N(+a);do if((g[k>>2]=e,c[k>>2]|0)>>>0<=2139095040){e=+N(+b);if((g[k>>2]=e,c[k>>2]|0)>>>0<=2139095040)if(((g[k>>2]=b,c[k>>2]|0)^d|0)<0){a=(d|0)<0?b:a;break}else{a=a>2]=a,c[k>>2]|0);d=b>>>23&255;switch(d|0){case 0:{d=b<<9;if(d)if((d|0)>-1){b=-127;do{b=b+-1|0;d=d<<1}while((d|0)>-1)}else b=-127;else b=-2147483648;break}case 255:{b=b&8388607|0?-2147483648:2147483647;break}default:b=d+-127|0}return b|0}function wp(a,b){a=+a;b=b|0;var d=0;if((b|0)>127){a=a*1701411834604692317316873.0e14;d=b+-127|0;if((d|0)>127){d=b+-254|0;d=(d|0)>127?127:d;a=a*1701411834604692317316873.0e14}}else if((b|0)<-126){a=a*1.1754943508222875e-38;d=b+126|0;if((d|0)<-126){d=b+252|0;d=(d|0)<-126?-126:d;a=a*1.1754943508222875e-38}}else d=b;return +(a*(c[k>>2]=(d<<23)+1065353216,+g[k>>2]))}function xp(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,l=0.0,m=0.0;h[k>>3]=a;d=c[k>>2]|0;b=c[k+4>>2]|0;e=(b|0)<0;do if(e|b>>>0<1048576){g=+N(+a);h[k>>3]=g;if((c[k>>2]|0)==0&(c[k+4>>2]|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[k>>3]=a*18014398509481984.0;b=c[k+4>>2]|0;e=c[k>>2]|0;d=-1077;f=9;break}}else if(b>>>0<=2146435071)if((d|0)==0&0==0&(b|0)==1072693248)a=0.0;else{e=d;d=-1023;f=9}while(0);if((f|0)==9){f=b+614242|0;c[k>>2]=e;c[k+4>>2]=(f&1048575)+1072079006;j=+h[k>>3]+-1.0;i=j*(j*.5);l=j/(j+2.0);m=l*l;a=m*m;h[k>>3]=j-i;e=c[k+4>>2]|0;c[k>>2]=0;c[k+4>>2]=e;g=+h[k>>3];a=j-g-i+l*(i+(a*(a*(a*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(a*(a*(a*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=g*.4342944818781689;i=+(d+(f>>>20)|0);l=i*.30102999566361177;j=l+m;a=j+(m+(l-j)+(a*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function yp(a){a=+a;var b=0,d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,l=0.0;b=(g[k>>2]=a,c[k>>2]|0);d=(b|0)<0;do if(b>>>0<8388608|d){f=+N(+a);if(!((g[k>>2]=f,c[k>>2]|0)|0)){a=-1.0/(a*a);break}if(d){a=(a-a)/0.0;break}else{b=(g[k>>2]=a*33554432.0,c[k>>2]|0);d=-152;e=9;break}}else if(b>>>0<=2139095039)if((b|0)==1065353216)a=0.0;else{d=-127;e=9}while(0);if((e|0)==9){e=b+4913933|0;l=(c[k>>2]=(e&8388607)+1060439283,+g[k>>2])+-1.0;j=l/(l+2.0);h=j*j;a=h*h;i=l*(l*.5);f=(c[k>>2]=(g[k>>2]=l-i,c[k>>2]|0)&-4096,+g[k>>2]);a=l-f-i+j*(i+(h*(a*.2849878668785095+.6666666269302368)+a*(a*.24279078841209412+.40000972151756287)));h=+(d+(e>>>23)|0);a=h*.3010292053222656+(f*.434326171875+(a*.434326171875+(h*7.903415166765626e-07-(f+a)*3.168997136526741e-05)))}return +a}function zp(a){a=+a;var b=0;h[k>>3]=a;b=c[k+4>>2]&2146435072;do if(b>>>0<2146435072|(b|0)==2146435072&0<0)if(a==0.0){a=-1.0/(a*a);break}else{a=+(sp(a)|0);break}else a=a*a;while(0);return +a}function Ap(a){a=+a;do if(((g[k>>2]=a,c[k>>2]|0)&2139095040)>>>0<2139095040)if(a==0.0){a=-1.0/(a*a);break}else{a=+(vp(a)|0);break}else a=a*a;while(0);return +a}function Bp(b,c){b=b|0;c=c|0;b=Cp(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function Cp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(np(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=_(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function Dp(){var a=0,b=0;a=i;i=i+16|0;if((i|0)>=(j|0))ba();b=Fa(20,a|0)|0;i=a;return b|0}function Ep(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;if((i|0)>=(j|0))ba();f=g+16|0;e=g;if(No(45056,a[d>>0]|0,4)|0){h=Fp(d)|0|32768;c[e>>2]=b;c[e+4>>2]=h;c[e+8>>2]=438;e=co(db(5,e|0)|0)|0;if((e|0)>=0){b=Gp(e,d)|0;if(!b){c[f>>2]=e;cb(6,f|0)|0;b=0}}else b=0}else{c[(eo()|0)>>2]=22;b=0}i=g;return b|0}function Fp(b){b=b|0;var c=0,d=0,e=0;d=(Bp(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(Bp(b,120)|0)==0;d=e?d:d|128;b=(Bp(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function Gp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+112|0;if((i|0)>=(j|0))ba();o=p+40|0;m=p+24|0;l=p+16|0;g=p;n=p+52|0;f=a[d>>0]|0;if(No(45056,f<<24>>24,4)|0){e=Xp(1144)|0;if(!e)e=0;else{h=e;k=h+112|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(k|0));if(!(Bp(d,43)|0))c[e>>2]=f<<24>>24==114?8:4;if(Bp(d,101)|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;ya(221,g|0)|0;f=a[d>>0]|0}if(f<<24>>24==97){c[l>>2]=b;c[l+4>>2]=3;f=ya(221,l|0)|0;if(!(f&1024)){c[m>>2]=b;c[m+4>>2]=4;c[m+8>>2]=f|1024;ya(221,m|0)|0}d=c[e>>2]|128;c[e>>2]=d}else d=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+120;c[e+48>>2]=1024;f=e+75|0;a[f>>0]=-1;if((d&8|0)==0?(c[o>>2]=b,c[o+4>>2]=21505,c[o+8>>2]=n,(Xa(54,o|0)|0)==0):0)a[f>>0]=10;c[e+32>>2]=9;c[e+36>>2]=1;c[e+40>>2]=2;c[e+12>>2]=2;if(!(c[11307]|0))c[e+76>>2]=-1;ab(45252);f=c[11312]|0;c[e+56>>2]=f;if(f|0)c[f+52>>2]=e;c[11312]=e;Ya(45252)}}else{c[(eo()|0)>>2]=22;e=0}i=p;return e|0}function Hp(a){a=a|0;var b=0,d=0,e=0;e=(c[a>>2]&1|0)!=0;if(!e){ab(45252);d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[11312]|0)==(a|0))c[11312]=b;Ya(45252)}b=Ip(a)|0;b=rb[c[a+12>>2]&7](a)|0|b;d=c[a+92>>2]|0;if(d|0)Yp(d);if(!e)Yp(a);return b|0}function Ip(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=Jp(a)|0;break}d=(cp(a)|0)==0;b=Jp(a)|0;if(!d)ho(a)}else{if(!(c[2406]|0))b=0;else b=Ip(c[2406]|0)|0;ab(45252);a=c[11312]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=cp(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=Jp(a)|0|b;if(d|0)ho(a);a=c[a+56>>2]|0}while((a|0)!=0);Ya(45252)}while(0);return b|0}function Jp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;g=a+28|0;if((c[b>>2]|0)>>>0>(c[g>>2]|0)>>>0?(pb[c[a+36>>2]&15](a,0,0)|0,(c[b>>2]|0)==0):0)b=-1;else{h=a+4|0;d=c[h>>2]|0;e=a+8|0;f=c[e>>2]|0;if(d>>>0>>0)pb[c[a+40>>2]&15](a,d-f|0,1)|0;c[a+16>>2]=0;c[g>>2]=0;c[b>>2]=0;c[e>>2]=0;c[h>>2]=0;b=0}return b|0}function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;c[f>>2]=d;d=So(a,b,f)|0;i=e;return d|0}function Lp(a,b,c){a=a|0;b=b|0;c=c|0;Mp(a,b,c)|0;return a|0}function Mp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3)do{f=c[d>>2]|0;if((f&-2139062144^-2139062144)&f+-16843009|0)break b;c[b>>2]=f;e=e+-4|0;d=d+4|0;b=b+4|0}while(e>>>0>3);while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);eq(b|0,0,e|0)|0;return b|0}function Np(){var a=0,b=0,d=0;b=45064;b=pq(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=iq(b|0,C|0,1,0)|0;a=C;d=45064;c[d>>2]=b;c[d+4>>2]=a;a=hq(b|0,a|0,33)|0;return a|0}function Op(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;if((i|0)>=(j|0))ba();m=n;l=e&255;a[m>>0]=l;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(Vo(b)|0)){h=c[g>>2]|0;k=4}else f=-1;else k=4;do if((k|0)==4){g=b+20|0;k=c[g>>2]|0;if(k>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[g>>2]=k+1;a[k>>0]=l;break}if((pb[c[b+36>>2]&15](b,m,1)|0)==1)f=d[m>>0]|0;else f=-1}while(0);i=n;return f|0}function Pp(a,b){a=a|0;b=b|0;return (Qp(a,np(a)|0,1,b)|0)+-1|0}function Qp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=_(d,b)|0;if((c[e+76>>2]|0)>-1){g=(cp(e)|0)==0;a=Uo(a,f,e)|0;if(!g)ho(e)}else a=Uo(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;if((i|0)>=(j|0))ba();e=d;c[e>>2]=b;b=So(c[2377]|0,a,e)|0;i=d;return b|0}function Sp(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[2377]|0;if((c[f+76>>2]|0)>-1)g=cp(f)|0;else g=0;do if((Pp(b,f)|0)<0)d=1;else{if((a[f+75>>0]|0)!=10?(d=f+20|0,e=c[d>>2]|0,e>>>0<(c[f+16>>2]|0)>>>0):0){c[d>>2]=e+1;a[e>>0]=10;d=0;break}d=(Op(f,10)|0)<0}while(0);if(g|0)ho(f);return d<<31>>31|0}function Tp(a,b){a=a|0;b=b|0;return +(+Up(a,b,1))}function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,k=0;k=i;i=i+112|0;if((i|0)>=(j|0))ba();h=k;f=h;g=f+112|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;no(h,0);e=+gp(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;i=k;return +e}function Vp(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=(b|0)/(d|0)|0;c[a+4>>2]=(b|0)%(d|0)|0;return}function Wp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;if((i|0)>=(j|0))ba();f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;a=co(_a(3,f|0)|0)|0;i=e;return a|0} -function Xp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;j=c[11318]|0;b=j>>>a;if(b&3|0){b=(b&1^1)+a|0;d=45312+(b<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[11322]|0)>>>0)Ca();a=h+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=d;c[e>>2]=h;break}else Ca()}else c[11318]=j&~(1<>2]=L|3;L=f+L+4|0;c[L>>2]=c[L>>2]|1;L=g;return L|0}h=c[11320]|0;if(o>>>0>h>>>0){if(b|0){d=2<>>12&16;d=d>>>i;f=d>>>5&8;d=d>>>f;g=d>>>2&4;d=d>>>g;e=d>>>1&2;d=d>>>e;b=d>>>1&1;b=(f|i|g|e|b)+(d>>>b)|0;d=45312+(b<<1<<2)|0;e=d+8|0;g=c[e>>2]|0;i=g+8|0;f=c[i>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[11322]|0)>>>0)Ca();a=f+12|0;if((c[a>>2]|0)==(g|0)){c[a>>2]=d;c[e>>2]=f;k=c[11320]|0;break}else Ca()}else{c[11318]=j&~(1<>2]=o|3;e=g+o|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(k|0){f=c[11323]|0;b=k>>>3;d=45312+(b<<1<<2)|0;a=c[11318]|0;b=1<>2]|0;if(b>>>0<(c[11322]|0)>>>0)Ca();else{l=a;m=b}}else{c[11318]=a|b;l=d+8|0;m=d}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=d}c[11320]=h;c[11323]=e;L=i;return L|0}a=c[11319]|0;if(a){d=(a&0-a)+-1|0;K=d>>>12&16;d=d>>>K;J=d>>>5&8;d=d>>>J;L=d>>>2&4;d=d>>>L;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=c[45576+((J|K|L|b|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;b=e;while(1){a=c[b+16>>2]|0;if(!a){a=c[b+20>>2]|0;if(!a){j=e;break}}b=(c[a+4>>2]&-8)-o|0;L=b>>>0>>0;d=L?b:d;b=a;e=L?a:e}g=c[11322]|0;if(j>>>0>>0)Ca();i=j+o|0;if(j>>>0>=i>>>0)Ca();h=c[j+24>>2]|0;e=c[j+12>>2]|0;do if((e|0)==(j|0)){b=j+20|0;a=c[b>>2]|0;if(!a){b=j+16|0;a=c[b>>2]|0;if(!a){n=0;break}}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;b=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;b=e}}if(b>>>0>>0)Ca();else{c[b>>2]=0;n=a;break}}else{f=c[j+8>>2]|0;if(f>>>0>>0)Ca();a=f+12|0;if((c[a>>2]|0)!=(j|0))Ca();b=e+8|0;if((c[b>>2]|0)==(j|0)){c[a>>2]=e;c[b>>2]=f;n=e;break}else Ca()}while(0);do if(h|0){a=c[j+28>>2]|0;b=45576+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();a=h+16|0;if((c[a>>2]|0)==(j|0))c[a>>2]=n;else c[h+20>>2]=n;if(!n)break}b=c[11322]|0;if(n>>>0>>0)Ca();c[n+24>>2]=h;a=c[j+16>>2]|0;do if(a|0)if(a>>>0>>0)Ca();else{c[n+16>>2]=a;c[a+24>>2]=n;break}while(0);a=c[j+20>>2]|0;if(a|0)if(a>>>0<(c[11322]|0)>>>0)Ca();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}while(0);if(d>>>0<16){L=d+o|0;c[j+4>>2]=L|3;L=j+L+4|0;c[L>>2]=c[L>>2]|1}else{c[j+4>>2]=o|3;c[i+4>>2]=d|1;c[i+d>>2]=d;a=c[11320]|0;if(a|0){f=c[11323]|0;b=a>>>3;e=45312+(b<<1<<2)|0;a=c[11318]|0;b=1<>2]|0;if(b>>>0<(c[11322]|0)>>>0)Ca();else{p=a;q=b}}else{c[11318]=a|b;p=e+8|0;q=e}c[p>>2]=f;c[q+12>>2]=f;c[f+8>>2]=q;c[f+12>>2]=e}c[11320]=d;c[11323]=i}L=j+8|0;return L|0}}}else if(a>>>0<=4294967231){a=a+11|0;o=a&-8;j=c[11319]|0;if(j){d=0-o|0;a=a>>>8;if(a)if(o>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;E=a<>>16&4;E=E<>>16&2;i=14-(p|q|i)+(E<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;b=c[45576+(i<<2)>>2]|0;a:do if(!b){a=0;b=0;E=86}else{f=d;a=0;g=o<<((i|0)==31?0:25-(i>>>1)|0);h=b;b=0;while(1){e=c[h+4>>2]&-8;d=e-o|0;if(d>>>0>>0)if((e|0)==(o|0)){a=h;b=h;E=90;break a}else b=h;else d=f;e=c[h+20>>2]|0;h=c[h+16+(g>>>31<<2)>>2]|0;a=(e|0)==0|(e|0)==(h|0)?a:e;e=(h|0)==0;if(e){E=86;break}else{f=d;g=g<<(e&1^1)}}}while(0);if((E|0)==86){if((a|0)==0&(b|0)==0){a=2<>>12&16;q=q>>>m;l=q>>>5&8;q=q>>>l;n=q>>>2&4;q=q>>>n;p=q>>>1&2;q=q>>>p;a=q>>>1&1;a=c[45576+((l|m|n|p|a)+(q>>>a)<<2)>>2]|0}if(!a){i=d;j=b}else E=90}if((E|0)==90)while(1){E=0;q=(c[a+4>>2]&-8)-o|0;e=q>>>0>>0;d=e?q:d;b=e?a:b;e=c[a+16>>2]|0;if(e|0){a=e;E=90;continue}a=c[a+20>>2]|0;if(!a){i=d;j=b;break}else E=90}if((j|0)!=0?i>>>0<((c[11320]|0)-o|0)>>>0:0){f=c[11322]|0;if(j>>>0>>0)Ca();h=j+o|0;if(j>>>0>=h>>>0)Ca();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){b=j+20|0;a=c[b>>2]|0;if(!a){b=j+16|0;a=c[b>>2]|0;if(!a){s=0;break}}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0>>0)Ca();else{c[b>>2]=0;s=a;break}}else{e=c[j+8>>2]|0;if(e>>>0>>0)Ca();a=e+12|0;if((c[a>>2]|0)!=(j|0))Ca();b=d+8|0;if((c[b>>2]|0)==(j|0)){c[a>>2]=d;c[b>>2]=e;s=d;break}else Ca()}while(0);do if(g|0){a=c[j+28>>2]|0;b=45576+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=s;if(!s){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();a=g+16|0;if((c[a>>2]|0)==(j|0))c[a>>2]=s;else c[g+20>>2]=s;if(!s)break}b=c[11322]|0;if(s>>>0>>0)Ca();c[s+24>>2]=g;a=c[j+16>>2]|0;do if(a|0)if(a>>>0>>0)Ca();else{c[s+16>>2]=a;c[a+24>>2]=s;break}while(0);a=c[j+20>>2]|0;if(a|0)if(a>>>0<(c[11322]|0)>>>0)Ca();else{c[s+20>>2]=a;c[a+24>>2]=s;break}}while(0);do if(i>>>0>=16){c[j+4>>2]=o|3;c[h+4>>2]=i|1;c[h+i>>2]=i;a=i>>>3;if(i>>>0<256){d=45312+(a<<1<<2)|0;b=c[11318]|0;a=1<>2]|0;if(b>>>0<(c[11322]|0)>>>0)Ca();else{u=a;v=b}}else{c[11318]=b|a;u=d+8|0;v=d}c[u>>2]=h;c[v+12>>2]=h;c[h+8>>2]=v;c[h+12>>2]=d;break}a=i>>>8;if(a)if(i>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;d=14-(J|K|d)+(L<>>15)|0;d=i>>>(d+7|0)&1|d<<1}else d=0;e=45576+(d<<2)|0;c[h+28>>2]=d;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[11319]|0;b=1<>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}f=i<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(i|0)){d=a;E=148;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=145;break}else{f=f<<1;a=d}}if((E|0)==145)if(b>>>0<(c[11322]|0)>>>0)Ca();else{c[b>>2]=h;c[h+24>>2]=a;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((E|0)==148){a=d+8|0;b=c[a>>2]|0;L=c[11322]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=h;c[a>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;c[h+24>>2]=0;break}else Ca()}}else{L=i+o|0;c[j+4>>2]=L|3;L=j+L+4|0;c[L>>2]=c[L>>2]|1}while(0);L=j+8|0;return L|0}}}else o=-1;while(0);d=c[11320]|0;if(d>>>0>=o>>>0){a=d-o|0;b=c[11323]|0;if(a>>>0>15){L=b+o|0;c[11323]=L;c[11320]=a;c[L+4>>2]=a|1;c[L+a>>2]=a;c[b+4>>2]=o|3}else{c[11320]=0;c[11323]=0;c[b+4>>2]=d|3;L=b+d+4|0;c[L>>2]=c[L>>2]|1}L=b+8|0;return L|0}a=c[11321]|0;if(a>>>0>o>>>0){J=a-o|0;c[11321]=J;L=c[11324]|0;K=L+o|0;c[11324]=K;c[K+4>>2]=J|1;c[L+4>>2]=o|3;L=L+8|0;return L|0}do if(!(c[11436]|0)){a=$a(30)|0;if(!(a+-1&a)){c[11438]=a;c[11437]=a;c[11439]=-1;c[11440]=-1;c[11441]=0;c[11429]=0;c[11436]=(fb(0)|0)&-16^1431655768;break}else Ca()}while(0);h=o+48|0;g=c[11438]|0;i=o+47|0;f=g+i|0;g=0-g|0;j=f&g;if(j>>>0<=o>>>0){L=0;return L|0}a=c[11428]|0;if(a|0?(u=c[11426]|0,v=u+j|0,v>>>0<=u>>>0|v>>>0>a>>>0):0){L=0;return L|0}b:do if(!(c[11429]&4)){a=c[11324]|0;c:do if(a){d=45720;while(1){b=c[d>>2]|0;if(b>>>0<=a>>>0?(r=d+4|0,(b+(c[r>>2]|0)|0)>>>0>a>>>0):0){e=d;d=r;break}d=c[d+8>>2]|0;if(!d){E=173;break c}}a=f-(c[11321]|0)&g;if(a>>>0<2147483647){b=La(a|0)|0;if((b|0)==((c[e>>2]|0)+(c[d>>2]|0)|0)){if((b|0)!=(-1|0)){h=b;f=a;E=193;break b}}else E=183}}else E=173;while(0);do if((E|0)==173?(t=La(0)|0,(t|0)!=(-1|0)):0){a=t;b=c[11437]|0;d=b+-1|0;if(!(d&a))a=j;else a=j-a+(d+a&0-b)|0;b=c[11426]|0;d=b+a|0;if(a>>>0>o>>>0&a>>>0<2147483647){v=c[11428]|0;if(v|0?d>>>0<=b>>>0|d>>>0>v>>>0:0)break;b=La(a|0)|0;if((b|0)==(t|0)){h=t;f=a;E=193;break b}else E=183}}while(0);d:do if((E|0)==183){d=0-a|0;do if(h>>>0>a>>>0&(a>>>0<2147483647&(b|0)!=(-1|0))?(w=c[11438]|0,w=i-a+w&0-w,w>>>0<2147483647):0)if((La(w|0)|0)==(-1|0)){La(d|0)|0;break d}else{a=w+a|0;break}while(0);if((b|0)!=(-1|0)){h=b;f=a;E=193;break b}}while(0);c[11429]=c[11429]|4;E=190}else E=190;while(0);if((((E|0)==190?j>>>0<2147483647:0)?(x=La(j|0)|0,y=La(0)|0,x>>>0>>0&((x|0)!=(-1|0)&(y|0)!=(-1|0))):0)?(z=y-x|0,z>>>0>(o+40|0)>>>0):0){h=x;f=z;E=193}if((E|0)==193){a=(c[11426]|0)+f|0;c[11426]=a;if(a>>>0>(c[11427]|0)>>>0)c[11427]=a;i=c[11324]|0;do if(i){e=45720;do{a=c[e>>2]|0;b=e+4|0;d=c[b>>2]|0;if((h|0)==(a+d|0)){A=a;B=b;C=d;D=e;E=203;break}e=c[e+8>>2]|0}while((e|0)!=0);if(((E|0)==203?(c[D+12>>2]&8|0)==0:0)?i>>>0>>0&i>>>0>=A>>>0:0){c[B>>2]=C+f;L=i+8|0;L=(L&7|0)==0?0:0-L&7;K=i+L|0;L=f-L+(c[11321]|0)|0;c[11324]=K;c[11321]=L;c[K+4>>2]=L|1;c[K+L+4>>2]=40;c[11325]=c[11440];break}a=c[11322]|0;if(h>>>0>>0){c[11322]=h;j=h}else j=a;d=h+f|0;a=45720;while(1){if((c[a>>2]|0)==(d|0)){b=a;E=211;break}a=c[a+8>>2]|0;if(!a){b=45720;break}}if((E|0)==211)if(!(c[a+12>>2]&8)){c[b>>2]=h;l=a+4|0;c[l>>2]=(c[l>>2]|0)+f;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;a=d+8|0;a=d+((a&7|0)==0?0:0-a&7)|0;k=l+o|0;g=a-l-o|0;c[l+4>>2]=o|3;do if((a|0)!=(i|0)){if((a|0)==(c[11323]|0)){L=(c[11320]|0)+g|0;c[11320]=L;c[11323]=k;c[k+4>>2]=L|1;c[k+L>>2]=L;break}b=c[a+4>>2]|0;if((b&3|0)==1){i=b&-8;f=b>>>3;e:do if(b>>>0>=256){h=c[a+24>>2]|0;e=c[a+12>>2]|0;do if((e|0)==(a|0)){d=a+16|0;e=d+4|0;b=c[e>>2]|0;if(!b){b=c[d>>2]|0;if(!b){J=0;break}}else d=e;while(1){e=b+20|0;f=c[e>>2]|0;if(f|0){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0>>0)Ca();else{c[d>>2]=0;J=b;break}}else{f=c[a+8>>2]|0;if(f>>>0>>0)Ca();b=f+12|0;if((c[b>>2]|0)!=(a|0))Ca();d=e+8|0;if((c[d>>2]|0)==(a|0)){c[b>>2]=e;c[d>>2]=f;J=e;break}else Ca()}while(0);if(!h)break;b=c[a+28>>2]|0;d=45576+(b<<2)|0;do if((a|0)!=(c[d>>2]|0)){if(h>>>0<(c[11322]|0)>>>0)Ca();b=h+16|0;if((c[b>>2]|0)==(a|0))c[b>>2]=J;else c[h+20>>2]=J;if(!J)break e}else{c[d>>2]=J;if(J|0)break;c[11319]=c[11319]&~(1<>>0>>0)Ca();c[J+24>>2]=h;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(d>>>0>>0)Ca();else{c[J+16>>2]=d;c[d+24>>2]=J;break}while(0);b=c[b+4>>2]|0;if(!b)break;if(b>>>0<(c[11322]|0)>>>0)Ca();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{d=c[a+8>>2]|0;e=c[a+12>>2]|0;b=45312+(f<<1<<2)|0;do if((d|0)!=(b|0)){if(d>>>0>>0)Ca();if((c[d+12>>2]|0)==(a|0))break;Ca()}while(0);if((e|0)==(d|0)){c[11318]=c[11318]&~(1<>>0>>0)Ca();b=e+8|0;if((c[b>>2]|0)==(a|0)){G=b;break}Ca()}while(0);c[d+12>>2]=e;c[G>>2]=d}while(0);a=a+i|0;g=i+g|0}a=a+4|0;c[a>>2]=c[a>>2]&-2;c[k+4>>2]=g|1;c[k+g>>2]=g;a=g>>>3;if(g>>>0<256){d=45312+(a<<1<<2)|0;b=c[11318]|0;a=1<>2]|0;if(b>>>0>=(c[11322]|0)>>>0){K=a;L=b;break}Ca()}while(0);c[K>>2]=k;c[L+12>>2]=k;c[k+8>>2]=L;c[k+12>>2]=d;break}a=g>>>8;do if(!a)d=0;else{if(g>>>0>16777215){d=31;break}K=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;d=14-(J|K|d)+(L<>>15)|0;d=g>>>(d+7|0)&1|d<<1}while(0);e=45576+(d<<2)|0;c[k+28>>2]=d;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[11319]|0;b=1<>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}f=g<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(g|0)){d=a;E=281;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=278;break}else{f=f<<1;a=d}}if((E|0)==278)if(b>>>0<(c[11322]|0)>>>0)Ca();else{c[b>>2]=k;c[k+24>>2]=a;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((E|0)==281){a=d+8|0;b=c[a>>2]|0;L=c[11322]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=k;c[a>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;c[k+24>>2]=0;break}else Ca()}}else{L=(c[11321]|0)+g|0;c[11321]=L;c[11324]=k;c[k+4>>2]=L|1}while(0);L=l+8|0;return L|0}else b=45720;while(1){a=c[b>>2]|0;if(a>>>0<=i>>>0?(F=a+(c[b+4>>2]|0)|0,F>>>0>i>>>0):0){b=F;break}b=c[b+8>>2]|0}g=b+-47|0;d=g+8|0;d=g+((d&7|0)==0?0:0-d&7)|0;g=i+16|0;d=d>>>0>>0?i:d;a=d+8|0;e=h+8|0;e=(e&7|0)==0?0:0-e&7;L=h+e|0;e=f+-40-e|0;c[11324]=L;c[11321]=e;c[L+4>>2]=e|1;c[L+e+4>>2]=40;c[11325]=c[11440];e=d+4|0;c[e>>2]=27;c[a>>2]=c[11430];c[a+4>>2]=c[11431];c[a+8>>2]=c[11432];c[a+12>>2]=c[11433];c[11430]=h;c[11431]=f;c[11433]=0;c[11432]=a;a=d+24|0;do{a=a+4|0;c[a>>2]=7}while((a+4|0)>>>0>>0);if((d|0)!=(i|0)){h=d-i|0;c[e>>2]=c[e>>2]&-2;c[i+4>>2]=h|1;c[d>>2]=h;a=h>>>3;if(h>>>0<256){d=45312+(a<<1<<2)|0;b=c[11318]|0;a=1<>2]|0;if(b>>>0<(c[11322]|0)>>>0)Ca();else{H=a;I=b}}else{c[11318]=b|a;H=d+8|0;I=d}c[H>>2]=i;c[I+12>>2]=i;c[i+8>>2]=I;c[i+12>>2]=d;break}a=h>>>8;if(a)if(h>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<>>16&4;L=L<>>16&2;d=14-(J|K|d)+(L<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;f=45576+(d<<2)|0;c[i+28>>2]=d;c[i+20>>2]=0;c[g>>2]=0;a=c[11319]|0;b=1<>2]=i;c[i+24>>2]=f;c[i+12>>2]=i;c[i+8>>2]=i;break}e=h<<((d|0)==31?0:25-(d>>>1)|0);a=c[f>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(h|0)){d=a;E=307;break}b=a+16+(e>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=304;break}else{e=e<<1;a=d}}if((E|0)==304)if(b>>>0<(c[11322]|0)>>>0)Ca();else{c[b>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((E|0)==307){a=d+8|0;b=c[a>>2]|0;L=c[11322]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=i;c[a>>2]=i;c[i+8>>2]=b;c[i+12>>2]=d;c[i+24>>2]=0;break}else Ca()}}}else{L=c[11322]|0;if((L|0)==0|h>>>0>>0)c[11322]=h;c[11430]=h;c[11431]=f;c[11433]=0;c[11327]=c[11436];c[11326]=-1;a=0;do{L=45312+(a<<1<<2)|0;c[L+12>>2]=L;c[L+8>>2]=L;a=a+1|0}while((a|0)!=32);L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=h+L|0;L=f+-40-L|0;c[11324]=K;c[11321]=L;c[K+4>>2]=L|1;c[K+L+4>>2]=40;c[11325]=c[11440]}while(0);a=c[11321]|0;if(a>>>0>o>>>0){J=a-o|0;c[11321]=J;L=c[11324]|0;K=L+o|0;c[11324]=K;c[K+4>>2]=J|1;c[L+4>>2]=o|3;L=L+8|0;return L|0}}c[(eo()|0)>>2]=12;L=0;return L|0}function Yp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!a)return;d=a+-8|0;h=c[11322]|0;if(d>>>0>>0)Ca();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)Ca();e=a&-8;m=d+e|0;do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0>>0)Ca();if((k|0)==(c[11323]|0)){a=m+4|0;b=c[a>>2]|0;if((b&3|0)!=3){q=k;g=j;break}c[11320]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=45312+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)Ca();if((c[b+12>>2]|0)!=(k|0))Ca()}if((d|0)==(b|0)){c[11318]=c[11318]&~(1<>>0>>0)Ca();a=d+8|0;if((c[a>>2]|0)==(k|0))f=a;else Ca()}else f=d+8|0;c[b+12>>2]=d;c[f>>2]=b;q=k;g=j;break}f=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){b=k+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){i=0;break}}else b=d;while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0>>0)Ca();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0>>0)Ca();a=e+12|0;if((c[a>>2]|0)!=(k|0))Ca();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else Ca()}while(0);if(f){a=c[k+28>>2]|0;b=45576+(a<<2)|0;if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();a=f+16|0;if((c[a>>2]|0)==(k|0))c[a>>2]=i;else c[f+20>>2]=i;if(!i){q=k;g=j;break}}d=c[11322]|0;if(i>>>0>>0)Ca();c[i+24>>2]=f;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0>>0)Ca();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[11322]|0)>>>0)Ca();else{c[i+20>>2]=a;c[a+24>>2]=i;q=k;g=j;break}else{q=k;g=j}}else{q=k;g=j}}else{q=d;g=e}while(0);if(q>>>0>=m>>>0)Ca();a=m+4|0;b=c[a>>2]|0;if(!(b&1))Ca();if(!(b&2)){if((m|0)==(c[11324]|0)){p=(c[11321]|0)+g|0;c[11321]=p;c[11324]=q;c[q+4>>2]=p|1;if((q|0)!=(c[11323]|0))return;c[11323]=0;c[11320]=0;return}if((m|0)==(c[11323]|0)){p=(c[11320]|0)+g|0;c[11320]=p;c[11323]=q;c[q+4>>2]=p|1;c[q+p>>2]=p;return}g=(b&-8)+g|0;e=b>>>3;do if(b>>>0>=256){f=c[m+24>>2]|0;a=c[m+12>>2]|0;do if((a|0)==(m|0)){b=m+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}}else b=d;while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[11322]|0)>>>0)Ca();else{c[b>>2]=0;n=a;break}}else{b=c[m+8>>2]|0;if(b>>>0<(c[11322]|0)>>>0)Ca();d=b+12|0;if((c[d>>2]|0)!=(m|0))Ca();e=a+8|0;if((c[e>>2]|0)==(m|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else Ca()}while(0);if(f|0){a=c[m+28>>2]|0;b=45576+(a<<2)|0;if((m|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();a=f+16|0;if((c[a>>2]|0)==(m|0))c[a>>2]=n;else c[f+20>>2]=n;if(!n)break}d=c[11322]|0;if(n>>>0>>0)Ca();c[n+24>>2]=f;a=m+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0>>0)Ca();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[11322]|0)>>>0)Ca();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[m+8>>2]|0;d=c[m+12>>2]|0;a=45312+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[11322]|0)>>>0)Ca();if((c[b+12>>2]|0)!=(m|0))Ca()}if((d|0)==(b|0)){c[11318]=c[11318]&~(1<>>0<(c[11322]|0)>>>0)Ca();a=d+8|0;if((c[a>>2]|0)==(m|0))l=a;else Ca()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[q+4>>2]=g|1;c[q+g>>2]=g;if((q|0)==(c[11323]|0)){c[11320]=g;return}}else{c[a>>2]=b&-2;c[q+4>>2]=g|1;c[q+g>>2]=g}a=g>>>3;if(g>>>0<256){d=45312+(a<<1<<2)|0;b=c[11318]|0;a=1<>2]|0;if(b>>>0<(c[11322]|0)>>>0)Ca();else{o=a;p=b}}else{c[11318]=b|a;o=d+8|0;p=d}c[o>>2]=q;c[p+12>>2]=q;c[q+8>>2]=p;c[q+12>>2]=d;return}a=g>>>8;if(a)if(g>>>0>16777215)d=31;else{o=(a+1048320|0)>>>16&8;p=a<>>16&4;p=p<>>16&2;d=14-(n|o|d)+(p<>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=45576+(d<<2)|0;c[q+28>>2]=d;c[q+20>>2]=0;c[q+16>>2]=0;a=c[11319]|0;b=1<>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(g|0)){d=a;e=130;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){e=127;break}else{f=f<<1;a=d}}if((e|0)==127)if(b>>>0<(c[11322]|0)>>>0)Ca();else{c[b>>2]=q;c[q+24>>2]=a;c[q+12>>2]=q;c[q+8>>2]=q;break}else if((e|0)==130){a=d+8|0;b=c[a>>2]|0;p=c[11322]|0;if(b>>>0>=p>>>0&d>>>0>=p>>>0){c[b+12>>2]=q;c[a>>2]=q;c[q+8>>2]=b;c[q+12>>2]=d;c[q+24>>2]=0;break}else Ca()}}else{c[11319]=a|b;c[e>>2]=q;c[q+24>>2]=e;c[q+12>>2]=q;c[q+8>>2]=q}while(0);q=(c[11326]|0)+-1|0;c[11326]=q;if(!q)a=45728;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[11326]=-1;return}function Zp(a,b){a=a|0;b=b|0;var d=0;if(a){d=_(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;b=Xp(d)|0;if(!b)return b|0;if(!(c[b+-4>>2]&3))return b|0;eq(b|0,0,d|0)|0;return b|0}function _p(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){a=Xp(b)|0;return a|0}if(b>>>0>4294967231){c[(eo()|0)>>2]=12;a=0;return a|0}d=$p(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){a=d+8|0;return a|0}d=Xp(b)|0;if(!d){a=0;return a|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;fq(d|0,a|0,(e>>>0>>0?e:b)|0)|0;Yp(a);a=d;return a|0}function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+4|0;o=c[n>>2]|0;d=o&-8;k=a+d|0;i=c[11322]|0;e=o&3;if(!((e|0)!=1&a>>>0>=i>>>0&a>>>0>>0))Ca();f=c[k+4>>2]|0;if(!(f&1))Ca();if(!e){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[11438]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;m=a+b|0;c[n>>2]=o&1|b|2;c[m+4>>2]=d|3;b=m+d+4|0;c[b>>2]=c[b>>2]|1;aq(m,d);return a|0}if((k|0)==(c[11324]|0)){d=(c[11321]|0)+d|0;if(d>>>0<=b>>>0){a=0;return a|0}m=d-b|0;l=a+b|0;c[n>>2]=o&1|b|2;c[l+4>>2]=m|1;c[11324]=l;c[11321]=m;return a|0}if((k|0)==(c[11323]|0)){e=(c[11320]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){e=a+b|0;m=e+d|0;c[n>>2]=o&1|b|2;c[e+4>>2]=d|1;c[m>>2]=d;b=m+4|0;c[b>>2]=c[b>>2]&-2}else{c[n>>2]=o&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[11320]=d;c[11323]=e;return a|0}if(f&2|0){a=0;return a|0}l=(f&-8)+d|0;if(l>>>0>>0){a=0;return a|0}m=l-b|0;g=f>>>3;do if(f>>>0>=256){h=c[k+24>>2]|0;f=c[k+12>>2]|0;do if((f|0)==(k|0)){e=k+16|0;f=e+4|0;d=c[f>>2]|0;if(!d){d=c[e>>2]|0;if(!d){j=0;break}}else e=f;while(1){f=d+20|0;g=c[f>>2]|0;if(g|0){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0>>0)Ca();else{c[e>>2]=0;j=d;break}}else{g=c[k+8>>2]|0;if(g>>>0>>0)Ca();d=g+12|0;if((c[d>>2]|0)!=(k|0))Ca();e=f+8|0;if((c[e>>2]|0)==(k|0)){c[d>>2]=f;c[e>>2]=g;j=f;break}else Ca()}while(0);if(h|0){d=c[k+28>>2]|0;e=45576+(d<<2)|0;if((k|0)==(c[e>>2]|0)){c[e>>2]=j;if(!j){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();d=h+16|0;if((c[d>>2]|0)==(k|0))c[d>>2]=j;else c[h+20>>2]=j;if(!j)break}f=c[11322]|0;if(j>>>0>>0)Ca();c[j+24>>2]=h;d=k+16|0;e=c[d>>2]|0;do if(e|0)if(e>>>0>>0)Ca();else{c[j+16>>2]=e;c[e+24>>2]=j;break}while(0);d=c[d+4>>2]|0;if(d|0)if(d>>>0<(c[11322]|0)>>>0)Ca();else{c[j+20>>2]=d;c[d+24>>2]=j;break}}}else{e=c[k+8>>2]|0;f=c[k+12>>2]|0;d=45312+(g<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0>>0)Ca();if((c[e+12>>2]|0)!=(k|0))Ca()}if((f|0)==(e|0)){c[11318]=c[11318]&~(1<>>0>>0)Ca();d=f+8|0;if((c[d>>2]|0)==(k|0))h=d;else Ca()}else h=f+8|0;c[e+12>>2]=f;c[h>>2]=e}while(0);if(m>>>0<16){c[n>>2]=l|o&1|2;b=a+l+4|0;c[b>>2]=c[b>>2]|1;return a|0}else{l=a+b|0;c[n>>2]=o&1|b|2;c[l+4>>2]=m|3;b=l+m+4|0;c[b>>2]=c[b>>2]|1;aq(l,m);return a|0}return 0}function aq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;l=a+(0-f)|0;k=f+b|0;i=c[11322]|0;if(l>>>0>>0)Ca();if((l|0)==(c[11323]|0)){a=o+4|0;d=c[a>>2]|0;if((d&3|0)!=3){r=l;g=k;break}c[11320]=k;c[a>>2]=d&-2;c[l+4>>2]=k|1;c[l+k>>2]=k;return}e=f>>>3;if(f>>>0<256){a=c[l+8>>2]|0;b=c[l+12>>2]|0;d=45312+(e<<1<<2)|0;if((a|0)!=(d|0)){if(a>>>0>>0)Ca();if((c[a+12>>2]|0)!=(l|0))Ca()}if((b|0)==(a|0)){c[11318]=c[11318]&~(1<>>0>>0)Ca();d=b+8|0;if((c[d>>2]|0)==(l|0))h=d;else Ca()}else h=b+8|0;c[a+12>>2]=b;c[h>>2]=a;r=l;g=k;break}f=c[l+24>>2]|0;b=c[l+12>>2]|0;do if((b|0)==(l|0)){a=l+16|0;b=a+4|0;d=c[b>>2]|0;if(!d){d=c[a>>2]|0;if(!d){j=0;break}}else a=b;while(1){b=d+20|0;e=c[b>>2]|0;if(e|0){d=e;a=b;continue}b=d+16|0;e=c[b>>2]|0;if(!e)break;else{d=e;a=b}}if(a>>>0>>0)Ca();else{c[a>>2]=0;j=d;break}}else{e=c[l+8>>2]|0;if(e>>>0>>0)Ca();d=e+12|0;if((c[d>>2]|0)!=(l|0))Ca();a=b+8|0;if((c[a>>2]|0)==(l|0)){c[d>>2]=b;c[a>>2]=e;j=b;break}else Ca()}while(0);if(f){d=c[l+28>>2]|0;a=45576+(d<<2)|0;if((l|0)==(c[a>>2]|0)){c[a>>2]=j;if(!j){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();d=f+16|0;if((c[d>>2]|0)==(l|0))c[d>>2]=j;else c[f+20>>2]=j;if(!j){r=l;g=k;break}}b=c[11322]|0;if(j>>>0>>0)Ca();c[j+24>>2]=f;d=l+16|0;a=c[d>>2]|0;do if(a|0)if(a>>>0>>0)Ca();else{c[j+16>>2]=a;c[a+24>>2]=j;break}while(0);d=c[d+4>>2]|0;if(d)if(d>>>0<(c[11322]|0)>>>0)Ca();else{c[j+20>>2]=d;c[d+24>>2]=j;r=l;g=k;break}else{r=l;g=k}}else{r=l;g=k}}else{r=a;g=b}while(0);h=c[11322]|0;if(o>>>0>>0)Ca();d=o+4|0;a=c[d>>2]|0;if(!(a&2)){if((o|0)==(c[11324]|0)){q=(c[11321]|0)+g|0;c[11321]=q;c[11324]=r;c[r+4>>2]=q|1;if((r|0)!=(c[11323]|0))return;c[11323]=0;c[11320]=0;return}if((o|0)==(c[11323]|0)){q=(c[11320]|0)+g|0;c[11320]=q;c[11323]=r;c[r+4>>2]=q|1;c[r+q>>2]=q;return}g=(a&-8)+g|0;e=a>>>3;do if(a>>>0>=256){f=c[o+24>>2]|0;b=c[o+12>>2]|0;do if((b|0)==(o|0)){a=o+16|0;b=a+4|0;d=c[b>>2]|0;if(!d){d=c[a>>2]|0;if(!d){n=0;break}}else a=b;while(1){b=d+20|0;e=c[b>>2]|0;if(e|0){d=e;a=b;continue}b=d+16|0;e=c[b>>2]|0;if(!e)break;else{d=e;a=b}}if(a>>>0>>0)Ca();else{c[a>>2]=0;n=d;break}}else{e=c[o+8>>2]|0;if(e>>>0>>0)Ca();d=e+12|0;if((c[d>>2]|0)!=(o|0))Ca();a=b+8|0;if((c[a>>2]|0)==(o|0)){c[d>>2]=b;c[a>>2]=e;n=b;break}else Ca()}while(0);if(f|0){d=c[o+28>>2]|0;a=45576+(d<<2)|0;if((o|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[11319]=c[11319]&~(1<>>0<(c[11322]|0)>>>0)Ca();d=f+16|0;if((c[d>>2]|0)==(o|0))c[d>>2]=n;else c[f+20>>2]=n;if(!n)break}b=c[11322]|0;if(n>>>0>>0)Ca();c[n+24>>2]=f;d=o+16|0;a=c[d>>2]|0;do if(a|0)if(a>>>0>>0)Ca();else{c[n+16>>2]=a;c[a+24>>2]=n;break}while(0);d=c[d+4>>2]|0;if(d|0)if(d>>>0<(c[11322]|0)>>>0)Ca();else{c[n+20>>2]=d;c[d+24>>2]=n;break}}}else{a=c[o+8>>2]|0;b=c[o+12>>2]|0;d=45312+(e<<1<<2)|0;if((a|0)!=(d|0)){if(a>>>0>>0)Ca();if((c[a+12>>2]|0)!=(o|0))Ca()}if((b|0)==(a|0)){c[11318]=c[11318]&~(1<>>0>>0)Ca();d=b+8|0;if((c[d>>2]|0)==(o|0))m=d;else Ca()}else m=b+8|0;c[a+12>>2]=b;c[m>>2]=a}while(0);c[r+4>>2]=g|1;c[r+g>>2]=g;if((r|0)==(c[11323]|0)){c[11320]=g;return}}else{c[d>>2]=a&-2;c[r+4>>2]=g|1;c[r+g>>2]=g}d=g>>>3;if(g>>>0<256){b=45312+(d<<1<<2)|0;a=c[11318]|0;d=1<>2]|0;if(a>>>0<(c[11322]|0)>>>0)Ca();else{p=d;q=a}}else{c[11318]=a|d;p=b+8|0;q=b}c[p>>2]=r;c[q+12>>2]=r;c[r+8>>2]=q;c[r+12>>2]=b;return}d=g>>>8;if(d)if(g>>>0>16777215)b=31;else{p=(d+1048320|0)>>>16&8;q=d<>>16&4;q=q<>>16&2;b=14-(o|p|b)+(q<>>15)|0;b=g>>>(b+7|0)&1|b<<1}else b=0;e=45576+(b<<2)|0;c[r+28>>2]=b;c[r+20>>2]=0;c[r+16>>2]=0;d=c[11319]|0;a=1<>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}f=g<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){b=d;e=127;break}a=d+16+(f>>>31<<2)|0;b=c[a>>2]|0;if(!b){e=124;break}else{f=f<<1;d=b}}if((e|0)==124){if(a>>>0<(c[11322]|0)>>>0)Ca();c[a>>2]=r;c[r+24>>2]=d;c[r+12>>2]=r;c[r+8>>2]=r;return}else if((e|0)==127){d=b+8|0;a=c[d>>2]|0;q=c[11322]|0;if(!(a>>>0>=q>>>0&b>>>0>=q>>>0))Ca();c[a+12>>2]=r;c[d>>2]=r;c[r+8>>2]=a;c[r+12>>2]=b;c[r+24>>2]=0;return}}function bq(){}function cq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (C=d,a-c>>>0|0)|0}function dq(a){a=+a;return a>=0.0?+M(a+.5):+Z(a-.5)}function eq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function fq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Na(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function gq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else fq(b,c,d)|0;return b|0}function hq(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<>>c-32|0}function iq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (C=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function jq(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<>>32-c;return a<>c;return a>>>c|(b&(1<>c-32|0}function lq(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function mq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=_(e,f)|0;d=a>>>16;a=(c>>>16)+(_(e,d)|0)|0;e=b>>>16;b=_(e,f)|0;return (C=(a>>>16)+(_(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function nq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=cq(j^a|0,i^b|0,j|0,i|0)|0;g=C;a=f^j;b=e^i;return cq((sq(h,g,cq(f^c|0,e^d|0,f|0,e|0)|0,C,0)|0)^a|0,C^b|0,a|0,b|0)|0}function oq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=cq(h^a|0,g^b|0,h|0,g|0)|0;b=C;sq(a,b,cq(l^d|0,k^e|0,l|0,k|0)|0,C,j)|0;e=cq(c[j>>2]^h|0,c[j+4>>2]^g|0,h|0,g|0)|0;d=C;i=f;return (C=d,e)|0}function pq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=mq(e,f)|0;a=C;return (C=(_(b,f)|0)+(_(d,e)|0)+a|a&0,c|0|0)|0}function qq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return sq(a,b,c,d,0)|0}function rq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;sq(a,b,d,e,f)|0;i=g;return (C=c[f+4>>2]|0,c[f>>2]|0)|0}function sq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (C=n,f)|0}else{if(!g){n=0;f=0;return (C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (C=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (C=n,f)|0}g=h-1|0;if(g&h|0){i=(aa(h|0)|0)+33-(aa(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (C=o,p)|0}else{p=lq(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (C=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (C=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (C=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((lq(i|0)|0)>>>0);return (C=o,p)|0}g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (C=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=iq(m|0,l|0,-1,-1)|0;d=C;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;cq(k|0,d|0,e|0,n|0)|0;p=C;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=cq(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=C;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (C=o,p)|0}function tq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ob[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function uq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return pb[a&15](b|0,c|0,d|0)|0}function vq(a,b){a=a|0;b=b|0;qb[a&31](b|0)}function wq(a,b){a=a|0;b=b|0;return rb[a&7](b|0)|0}function xq(a,b,c,d,e){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;return sb[a&0](+b,c|0,d|0,e|0)|0}function yq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;tb[a&31](b|0,c|0,d|0)}function zq(a){a=a|0;ub[a&1]()}function Aq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return vb[a&7](b|0,c|0,d|0,e|0)|0}function Bq(a,b,c){a=a|0;b=b|0;c=c|0;return wb[a&7](b|0,c|0)|0}function Cq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xb[a&63](b|0,c|0,d|0,e|0)}function Dq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;da(0);return 0}function Eq(a,b,c){a=a|0;b=b|0;c=c|0;ea(1);return 0}function Fq(a){a=a|0;fa(2)}function Gq(a){a=a|0;ga(3);return 0}function Hq(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;ha(4);return 0}function Iq(a,b,c){a=a|0;b=b|0;c=c|0;ia(5)}function Jq(){ja(6)}function Kq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ka(7);return 0}function Lq(a,b){a=a|0;b=b|0;la(8);return 0}function Mq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ma(9)} - -// EMSCRIPTEN_END_FUNCS -var ob=[Dq,Qb];var pb=[Eq,fo,io,lo,Ro,nn,Nn,Sn,Xn,jo,Eq,Eq,Eq,Eq,Eq,Eq];var qb=[Fq,Yp,bc,dn,Ln,Qn,Vn,Aj,Bj,Ok,Qk,Sk,Uk,Wk,Xk,Yk,Zk,_k,$k,al,bl,cl,go,ko,Fq,Fq,Fq,Fq,Fq,Fq,Fq,Fq];var rb=[Gq,Xp,bo,_m,Kn,Pn,Un,Rl];var sb=[Hq];var tb=[Iq,ji,ki,li,mi,ti,ui,vi,wi,xi,yi,zi,Ai,Bi,Ci,Di,Ei,fi,gi,oi,pi,ri,si,Iq,Iq,Iq,Iq,Iq,Iq,Iq,Iq,Iq];var ub=[Jq,ac];var vb=[Kq,Jn,On,Tn,Yn,Sg,Kq,Kq];var wb=[Lq,mn,Mn,Rn,Wn,Lq,Lq,Lq];var xb=[Mq,Tc,Uc,Vc,_c,$c,ad,ed,fd,id,jd,kd,od,pd,qd,vd,wd,xd,Bd,Cd,Fd,Gd,Hd,Kd,Ld,Md,Pd,Rd,Wd,Xd,$d,ae,ge,he,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq,Mq];return{_quiet_encoder_destroy:Xb,_roundf:dq,_quiet_decoder_recv:Mb,_quiet_decoder_checksum_fails:Hb,_quiet_encoder_get_frame_len:Sb,_bitshift64Lshr:hq,_quiet_decoder_destroy:Pb,_bitshift64Shl:jq,_quiet_decoder_create:Ib,_fflush:Ip,_quiet_decoder_profile_str:$b,_memset:eq,_memcpy:fq,_quiet_decoder_consume_stats:Lb,_i64Subtract:cq,_quiet_encoder_clamp_frame_len:Tb,_i64Add:iq,_quiet_decoder_enable_stats:Jb,_quiet_decoder_disable_stats:Kb,_quiet_decoder_consume:Nb,_quiet_encoder_send:Vb,_quiet_encoder_profile_str:Zb,_quiet_encoder_create:Rb,_quiet_encoder_emit:Wb,___errno_location:eo,_free:Yp,_memmove:gq,_malloc:Xp,_quiet_decoder_flush:Ob,runPostSets:bq,stackAlloc:yb,stackSave:zb,stackRestore:Ab,establishStackSpace:Bb,setThrew:Cb,setTempRet0:Fb,getTempRet0:Gb,dynCall_iiiiiiii:tq,dynCall_iiii:uq,dynCall_vi:vq,dynCall_ii:wq,dynCall_idiii:xq,dynCall_viii:yq,dynCall_v:zq,dynCall_iiiii:Aq,dynCall_iii:Bq,dynCall_viiii:Cq}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__quiet_encoder_destroy=asm["_quiet_encoder_destroy"];asm["_quiet_encoder_destroy"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_destroy.apply(null,arguments)});var real__roundf=asm["_roundf"];asm["_roundf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__roundf.apply(null,arguments)});var real__quiet_decoder_recv=asm["_quiet_decoder_recv"];asm["_quiet_decoder_recv"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_recv.apply(null,arguments)});var real__quiet_decoder_checksum_fails=asm["_quiet_decoder_checksum_fails"];asm["_quiet_decoder_checksum_fails"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_checksum_fails.apply(null,arguments)});var real__quiet_encoder_get_frame_len=asm["_quiet_encoder_get_frame_len"];asm["_quiet_encoder_get_frame_len"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_get_frame_len.apply(null,arguments)});var real__bitshift64Lshr=asm["_bitshift64Lshr"];asm["_bitshift64Lshr"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Lshr.apply(null,arguments)});var real__quiet_decoder_destroy=asm["_quiet_decoder_destroy"];asm["_quiet_decoder_destroy"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_destroy.apply(null,arguments)});var real__bitshift64Shl=asm["_bitshift64Shl"];asm["_bitshift64Shl"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__bitshift64Shl.apply(null,arguments)});var real__quiet_decoder_create=asm["_quiet_decoder_create"];asm["_quiet_decoder_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_create.apply(null,arguments)});var real__fflush=asm["_fflush"];asm["_fflush"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__fflush.apply(null,arguments)});var real__quiet_decoder_profile_str=asm["_quiet_decoder_profile_str"];asm["_quiet_decoder_profile_str"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_profile_str.apply(null,arguments)});var real__quiet_decoder_consume_stats=asm["_quiet_decoder_consume_stats"];asm["_quiet_decoder_consume_stats"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_consume_stats.apply(null,arguments)});var real__i64Subtract=asm["_i64Subtract"];asm["_i64Subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Subtract.apply(null,arguments)});var real__quiet_encoder_clamp_frame_len=asm["_quiet_encoder_clamp_frame_len"];asm["_quiet_encoder_clamp_frame_len"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_clamp_frame_len.apply(null,arguments)});var real__i64Add=asm["_i64Add"];asm["_i64Add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__i64Add.apply(null,arguments)});var real__quiet_decoder_enable_stats=asm["_quiet_decoder_enable_stats"];asm["_quiet_decoder_enable_stats"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_enable_stats.apply(null,arguments)});var real__quiet_decoder_disable_stats=asm["_quiet_decoder_disable_stats"];asm["_quiet_decoder_disable_stats"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_disable_stats.apply(null,arguments)});var real__quiet_decoder_consume=asm["_quiet_decoder_consume"];asm["_quiet_decoder_consume"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_consume.apply(null,arguments)});var real__quiet_encoder_send=asm["_quiet_encoder_send"];asm["_quiet_encoder_send"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_send.apply(null,arguments)});var real__free=asm["_free"];asm["_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__free.apply(null,arguments)});var real__quiet_encoder_create=asm["_quiet_encoder_create"];asm["_quiet_encoder_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_create.apply(null,arguments)});var real__quiet_encoder_emit=asm["_quiet_encoder_emit"];asm["_quiet_encoder_emit"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_emit.apply(null,arguments)});var real____errno_location=asm["___errno_location"];asm["___errno_location"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real____errno_location.apply(null,arguments)});var real__quiet_encoder_profile_str=asm["_quiet_encoder_profile_str"];asm["_quiet_encoder_profile_str"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_encoder_profile_str.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__malloc=asm["_malloc"];asm["_malloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__malloc.apply(null,arguments)});var real__quiet_decoder_flush=asm["_quiet_decoder_flush"];asm["_quiet_decoder_flush"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__quiet_decoder_flush.apply(null,arguments)});var _quiet_encoder_destroy=Module["_quiet_encoder_destroy"]=asm["_quiet_encoder_destroy"];var _roundf=Module["_roundf"]=asm["_roundf"];var _quiet_decoder_recv=Module["_quiet_decoder_recv"]=asm["_quiet_decoder_recv"];var _quiet_decoder_checksum_fails=Module["_quiet_decoder_checksum_fails"]=asm["_quiet_decoder_checksum_fails"];var _quiet_encoder_get_frame_len=Module["_quiet_encoder_get_frame_len"]=asm["_quiet_encoder_get_frame_len"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _quiet_decoder_destroy=Module["_quiet_decoder_destroy"]=asm["_quiet_decoder_destroy"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _quiet_decoder_create=Module["_quiet_decoder_create"]=asm["_quiet_decoder_create"];var _fflush=Module["_fflush"]=asm["_fflush"];var _quiet_decoder_profile_str=Module["_quiet_decoder_profile_str"]=asm["_quiet_decoder_profile_str"];var _memset=Module["_memset"]=asm["_memset"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _quiet_decoder_consume_stats=Module["_quiet_decoder_consume_stats"]=asm["_quiet_decoder_consume_stats"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _quiet_encoder_clamp_frame_len=Module["_quiet_encoder_clamp_frame_len"]=asm["_quiet_encoder_clamp_frame_len"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _quiet_decoder_enable_stats=Module["_quiet_decoder_enable_stats"]=asm["_quiet_decoder_enable_stats"];var _quiet_decoder_disable_stats=Module["_quiet_decoder_disable_stats"]=asm["_quiet_decoder_disable_stats"];var _quiet_decoder_consume=Module["_quiet_decoder_consume"]=asm["_quiet_decoder_consume"];var _quiet_encoder_send=Module["_quiet_encoder_send"]=asm["_quiet_encoder_send"];var _free=Module["_free"]=asm["_free"];var _quiet_encoder_create=Module["_quiet_encoder_create"]=asm["_quiet_encoder_create"];var _quiet_encoder_emit=Module["_quiet_encoder_emit"]=asm["_quiet_encoder_emit"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _quiet_encoder_profile_str=Module["_quiet_encoder_profile_str"]=asm["_quiet_encoder_profile_str"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _memmove=Module["_memmove"]=asm["_memmove"];var _malloc=Module["_malloc"]=asm["_malloc"];var _quiet_decoder_flush=Module["_quiet_decoder_flush"]=asm["_quiet_decoder_flush"];var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=asm["dynCall_iiiiiiii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_idiii=Module["dynCall_idiii"]=asm["dynCall_idiii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];if(memoryInitializer){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,Runtime.GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);for(var i=0;i0){Module.printErr("run() called, but dependencies remain, so not running");return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(ENVIRONMENT_IS_WEB&&preloadStartTime!==null){Module.printErr("pre-main prep time: "+(Date.now()-preloadStartTime)+" ms")}if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){Module.printErr("exit("+status+") implicitly called by end of main(), but noExitRuntime, so not exiting the runtime (you can use emscripten_force_exit, if you want to force a true shutdown)");return}if(Module["noExitRuntime"]){Module.printErr("exit("+status+") called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)")}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run() - - - - diff --git a/quiet-emscripten.js.mem b/quiet-emscripten.js.mem deleted file mode 100644 index 58eaeb2aa7ea071972a92c1395bb06a7984e15cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45051 zcmeFacU%+A^8kGGUKD$c1p%dlh)C{4u!E@BTMQ&X1d^Bp0ShX2#ol}G*n7#Hz4zX` zkG<<-mv`pw(kP10_xJg{f4px#47;~GJ3BkOJG-|#ySH-)LF@#WUyp;=UIg(Oz_u)XbO-Fpa7TxFdJYmz&?O9f*@i6Hkc7aRe)Cja{)X6W;Z2>OJx_I3)6yF5j_!-;HJ^d0w50v)4@Lv0Of_S z4g7lm?7(jZa2NcK0kDjizg-SNxBx&kviS#rKMcSTo-uzB_!9x3dfEKPfqx1BR6m>l z4)8MoP~~j?kHP;6Kv!pO!=N1ll!AE7KM4Gx0Hwii4iE?aE&y)ew*XLsKMSA?_%Z+K z;GYXn7W`QL9pKjjlmkDO|2p{Z0h9+nmj5UCEr&y%;K%aU0Dm2Tir~lmqQTz|pc42k z05ZTo2%s|fEdiE+e+@tt@MC`G!G9H?D)=$KU*NYIK@iozkNNq4KNtX;80Oal{0RU8 z@T1JffqyDM4e+DP_k#ZrKuz$Y%wK{36F@ESqs*&~1bzW(gCAuc3;r$u?%+q6=YW44 zKppU-%(sD`2Jiqs%KRz#Ujul8AIs}93S68nb>Z0(Km`6o08m?Oc}IhP zB7iqMTLWwY|1JO@@Y?{~0{y-g_>sRk;9m+*pMTbZ{|G<`JY)KM;C}|t0Q|_W#Tbwq zKq&Z;o)`Fo02+ed79bY9b3r`;$| z@Uv|R2y_6buo3DV+|aQcKIV(Rj4Pw5j4QU37x)o>Am9uK5CDEIxZ!}0WyE@~oO+uq z-DVP1admSXhFJVOz}X7m3HW=#jWWV_1)N^hCXypAg;5vZEuwA&m{DbWWK&p=$nPz{ ze+u9aX+MJ7flrHV2>TYc|IJ$?NO@apYRL6?>a5#JYL0e0`FUC})uM4Oh4qiTRe-{H z0)zvdP;fOs2jz(U7yDRk0OWUhR4m!$(o1sR#`;w5{XtaJ_&lm(qcvndr*c%C<6S8$ zW;%s!21ed>$ow%qtj7j)QKyk>$J+0|BPl-h*m|V zjh{%>+`N*SJ8K>}d!Pj+C>ua+S>1!O>^Gb`ws047w{75<$A=nZ+j1UGmb@bFDS zBHY?tkJ7n|DovyijN>p~hog(fXMxuPA;Prn<_Xi| zGp5t=Sf=YZA;M+Lb|i?H{h=Siv>1*7@J#b~7{&sI@o^;LoB6NTr$;}=V>sf#GwbKW z&`)C+#xQiy-anW8X!jF%mS zcsDB7rZ67mi}_mCR`MPm4!jWMi?Z3Ulgwzr}=_XO)c zJX(RlXGwZ%)&+Wc_tVXl6h1%OF_CrMYbjW_O?+dj&FfeO-LBsRtb5Gy5slC2-n`|? zy3gwDC-HfXdj#tu5BxKYF67I)jVrh^JUxb|$6!3r!}1}0)(sHJS$A&7iLARaYbCmr zq!Ghl`O(Glql@K77t4<>=8Z0vpL0*JE|wpkvHa*_e!NTZ`BHqo6rV4J`C6`P%f`Fx zs=>NB;~tZUk1m!UT`WJkSblVo2mYBx7t4<>mY=6b@$}gAK##)m@%2FQ^+56Ufca9f z)*{9#Sj=o{JC&)lbOf~fT;{?<5p{WbEc4lH7CG6a8@(VRg}F1~Exl#dEP7tr9oo|+ zh01+*AH&bSPEYSyCm##XoEBVPMg{pA&Et!%tiyVA?1he^LL#Ctu66T4S&ED+QgBhtZm8vpuGSg_y zbF$fNALj7HG0fEZ@eHwkINkGWZN}+fb*fXnNT$KhhUAL}o#;LGGR7)kqc*J8bGl`z zhV+DI5tL-wlW@mQ^Y)&Jb7CT-RT$p~H)(B!y7Y593r2i!95rste0tjV@npA8v#H|~ z$}$ekmQynoT5XfwEn%9yXhF8_I)S-4_9r=KdvzvHJ&+k9ZOX{^`7tgtqnIAY z&uE|9rGUOVMz0?AlrCF!40T{>Ri?)CX4Kf~DGaltC3(QFDHC($3;A)y11+Ig%2yduJD&yt|+U{2a(*M&3ZT&Y- z$!pu6(u2P*VH{@NqwU7}F`iNP=$WhTXq)GiWxi#fpgqMS>7S$WsBL4W(n&ibK&O{u z?8Z`L-S+qCRS(~hS7p&u+>D`2=QJUbstU1 zgGW;lgCeQ*+s9IyZUvH!Li$iYb6$}Z^UG1Mbq zF3}5~yHZ;m$51QYhfv*Zn^2V(kW}dKy5t$98#QD4KV<&XxxzA5{TcB%t#*X1Ka*Wy zzxI30``T4^M+nz;KTWsyxF>9Je+|@KBAGJi9l0#d1=DHUh$aeMYekXoc4w3Ido5u$ zbh}P=d)uE`aA7FfV1*xZggHxYx^;nOoClKBk>OO0)5l0+GD$gq8AzrzysEvm`y_dz zayWT(_h`o2DUG?Hn8{2f>N9DFS1_~dUemVpUCCJV{z0GHsbnf_?oavDn8{>!cBD=O zZe<*{{Ucm^b~(r_kIb?bGLh>hGu@o}GV4YLGpA2YW3&&a(RP(b!Z`JlJ~enW^Y6^2 z)S#0cm~Hoj)U~(Mm|@ZHg|7WaGWXA~ASuN+x&wxw`h1>L|B{S%kBVTFV-cP1F?oXyw zW98JXm$s6~b4xG4` z{+2z3>Qmu0J!++bDq~feS#@xYcADEO`tuZPY9HC3{&(hhrtk4hbeOe-skbbTuKj9- zc4XdqdPd}Ty0RpPp8P70>fC)39jO*lxgVa;pN2mcJ_>MS;$|!+^IwXnnN<|b(cQDC zGV2>K?&)KxJC6@&TihQ@c~NFe&y`u!qksWaY~yj1*_|d-R+m{+#VU`5kHxd8Z`t-# zhp@)flkbz6;my_5QnO%Y{NN1gL%(VC(}i8AMr*#&Rx%RiWa-qqQeCM#)hQ|*=KJl+ zJQYqGl}^o>ZAZyEn^Bv1;l=^j8+co+Jz32T` z@=4fuy8Gr6TBYq}?S<8A!+-8qQu{Kk$*gMOROpvA)S)Kx$)IxUXxC>e$^8#p$)R=D zFnev1!=u{yGx1++$=L1(wVE?$!@u5`O84$+M;??+p3#!`x8OWSgxC%;fjO$cTEA=&}#@l1poSr4`qXkc*S1QtO9mN%x+O zsNPf4$(+MxwO$vaagGOcCOus%e zmh5*gk1Az0iYynSpeilhMlM^vgsd5RL7UZO6?rs4&OAOhmdUGI zy%Gjf?$)!J8^4^WLz^ZrRbB*AHg9Jzr)HMdetxu=>Ad-&uwUP$3=?^t3@){v`M4s7 z%zNMieRe+6u1pu^W>5;_J81}W;+}xn@;rsfd(f1r)NU+u?D-YpwzA`x3ss}&gx6!4 zE2}=!hnh@hKJ;Bj_qj8aktw=BTZ&+gmKs1!j7w$8`3F$L7j$G&c66ln&KSZB-&IxX zvw1pmMmdapzi|k2B+U`V&T-6P!8vlLSw208n$MgWU6<7(in?`~Ps6K%J|LJUgpB!~ zRgW3griHfF7m7JKoTBSHQcSmNA82iEdl>&$)4{vzG2K2*ruNvIF;|yPqNdEK%j7h) zr-pyZr#*(nQJI4~FyqC}+J^B$X21NJa7b^GsXqS%dH1ImQ#EfenQ9lo_}3l7Y^+?4 z88L7)^KxWIrcM9q%%I7QnI*3ynY%w_%v1ln!rsUFFy8MP(?`AfFl9S`qPKP(#4PHt zmL55=0^@XVIW>PoS;k^ee`;!21hadQFLmFc9wYSbKn?Wh#B9hIO!ij}X0E**4&!zw z#^p6Qr4{t!xmB5%FYfe7=-2zshLXclD{89@+(hl~w3@#DVh}y*>w9`&b|yX0zA-)O zmlu6Ccn6if)`R{YHi>dtn@K-e?MwY!xRh2gaa7opEmXucFYUA5gXme&mxa`oE(t2n%-7+E|a|eBE8yeG_!YoKIqA+%pS2DbD}{cqkQp;{u#51z7$!8 zDXWO0FST%Eo-TY#SGw)RjE`SU_g;I6PV2OsO0r)^j~F+aOhhMaa|8Y#~RZQRQ++N9TOCAqEkBB>D$J%o z(Gg5~zYDZDHj)wUTuVP27^;oGd4Zn)k)+G-I8TQ)eoIH}SV@QVTtVl$X4AR5mQs^a zF48l)_oqs0f6zT9+QXbb8|J!Ml&^XX{d{vKykB0VKef6pblJ6<_I_teNlyKwd)^;J z`pJh;1K%s5pHHB6C$?e|UguEX!vxHA;cRMfpW2MjekN7#M@4PzUAffbE#Y+H=Ui&4 z;$IlcW>A-Uuc7bWQ&VG452mhk8ctP`ccC(TW>a65J5#E$6R3*of~azR##6aBp9-Dn zS=75B@ZP*|7}b5CJ=O5acq-)a3G#AgONbxMWNW%n)AsgZTpM+#%3rU>EIlQsT&FYz zT{D!rbj4PCkCs!NGaJwrk#g$kzwham^M_D=OIN{sya(vyDb$+CW>nO;fmGD0ZdB(Q zPE<;ck}AI=fO>qc8|5%--`?Hca_Ujy7olBcIWAMO4RvkkT;}Ph zijeO}Cf>CIHQA*JbEt_Gb!JTxQ)%B)>Rk3AVUkB>%6_+yj&QC-dAImL2haDR#&uXl z%STqGN-tkdb^BD2YMwWUdL^kq`7a2-IUpsp?@T?fQHfgK@|p1E(t1?SU&Bc0T`Q{k z5J&3T_6n4G$!StKJBSLfoyYXZ^QYdZWUQO}r5baRj--~CiDJI|@Tbc3EU#5gi=sMS zZ$RJL9ZAhN`<`C^wiETG;!0YT<_~kCDO9RuH%dIFGqvkz6Kc^Ie=2*m9~Hm26P38A z3FVr8SNN`VM@n`ihaC3Jmui08ff~@J33czvY4T?DVd0D#>zQjVleJ5>j$+2Y%Gf>G zr6#lG+yt%oU?jYk-6Yq)eGTny6Isq}Eq#HgM%OvIjz0fnsqp=qAbMBGrSPMzcTkLU zf_Bcd{#5J~UviH)j*9qLJG|VTj+EoE^<-rJa8k1IfRNeoOgMPaJZ=5jXUN?to2Yo7 zY|{K)7@0Y54kMU*NEjs>#n`I+$!cS3GMC;Q5L!Nog8qMvTy`LoesysZd4ER@?WG#G z8ofTVhOWJ98OZn({r%}Be7}J<5lD92KZ$Y>F+#Hne$*1rbHb3v{i&k~BT39Jw^g6; zMfY+@>!J0@%?S?F;-nyQ(9;~U`qk|)e$QbZZ@EPZ?ME@)FWw@Lhc{t1E!j?PJD3D> z&81ZTyPY6FazBhBS9NZ}1pN|{wT36b`&2IZ?|CnJdEjATV!%5(`rt3kX z)T}Z51IRZj0FuV+u-phJ7h~XAV&zzrAB*t6051x*KL6kF>#FAet1eXE|Nr~{ump_T zJ&Hm1tn=$!UAVD}ak`%_9G}sTzoJ|nUQuyeD${hv_`ge2FhApTy10U2#^FWzbzwT! zIDehrI8GO)%SRVy?CSi*;S?8+>F}qEM;)CHKh)Xiq7FxQYi&+{!z24com$in>0sQ2 zEvB&r@R1}AYrp+@x|b|Z-EemU^Tfe~{~<3%Kl_sAX_Tf|uTeI|;y^@+%86sQ1mGzY z#MOf!7L7C`8aHtvhRm2n5cfY>{n|hfH+K9P*v$0*kgZZ?r5!Dt%2--iS=*Mkt6*zq zXKz{A%F(f^Q#HcHOyCsY7-&|D2)1*#tz*@|GSte;vaVetTW>QVK|1+4HnwVK+1@VF zwu4zyqM1`?$1YAS9b1`oC!+0o+V--Fwd`%%*G^@bV5M=CIwcYrW|@S{tdHXWr&P;9 zR@t@+yCHUyZKqfbvz+EM!f~Y8Ok$SV7-Fo`T*q9i`IZapCfY8t++?-ccB$P~V!7E0 z#~n^P9alT8A@-Q%*=p@*%MDih9M3ylAP$;cvOR2f#PX`uHOu2xCv0!pog!|V-ElnY zbkFP^@!sj7<43E9lY%8+BCBEb`d(07JlZ99opHq zw~4gw;L_B&nMG&wE*34#Te)<1j<)G(-OC}?zPEK>80>^? zBGrD7L$nRSy?5A0bFdykM(|MN580WDTbIo%d=G!l@nP|Ppev`vy>!mhZ zotL|;FyCRZ(|onX8s|MOdDdDR+J1w>KJ)Vy7n~2eT(UlFbHx6t!!`Tk4kxT{+MIH} z?Q+Nbti?T-ch2uE9-4o2cx?ZV&1dT`HqWe|JAAi)Y4Owim&+UHG_auCU{=-amDyY~ z53|`#m$zx&^FzNK*&BY3;7gMdGPzu;5+zC# zbOC^58jz-t=;D&n)G0)=R4kFI2$r%aRVq)?Bom56Ng5$Xs_F3wVwFlJRjG-Dtb|lq zf=H>7Cdx8(m>RJX$n(ikrHL9*yjU(FRI;RG-V6Dqr;0T)g`7x`%2{Sq(!S|Zc|sPE zB$mm6We8L%cpP;yP$bmiG-aw(Ekfezth9JVD#1A-i8NK5MMyIfq-r&rSB6Xi90NH8 z6ho9KO9g6bLXyCHMdDOtvY1dwIg%=ZBY<3TDa9I%RG!W;$fZWIDI&G3zf>Ju;1co7Mzgis=~eWY@`Zq%c9MtZ%wZ zB1)2K6iSUqtx*L+CZ1m2f^>O`T#+I7OP8zDl}d$5Bb5jsO2E~*AWYz{wkM=2l|mJU z;Yfk6lHyWxDIuYxKtgCeVvSUkBF)0231Ycip%ElWxnKbV3o>MyWC0djlckgjYIbbX zx=n27HZ^}sr>FuH!$LoCs!W0`Ks#59lcYv$=%R{eL9UQXp{kWZ_)jX`PtoyRqe^oeR3=@}U49T1|632F%StcwY1=pCd_(;zS;SRd0M&^rW}=oi?4 zNKnZ8DN@t1r-)MpssO)0L2F?Hh-z4LR70X)P!UlvD{sZxg$?WIzQ zPn;rEk*1J)3jza!`~vIOCw`-YU@R$4i$GM7ItYg!m6}yUpqE8y>LgT0NCnil{#lTg zuGR?RrGg|CbXBQJph*_X1^#+Pf>cnG8IgdosW@JY)d{AIPgNwO6iknaWpZUYWQ)-P z)bTnc2aNQWsucFbZ&Sl?T5NK4nm9F8R}MCtLS;eaT9Oj*${blqV5NhJcx}uD2p~?N zi0>m!&I-RT@flm-vqWE z(2ETK#&(l3VX#3kGC4amutKmWE z2NuVf0iie^+4}WHVTzJ)RKf8D*@1HM^BqG|4ZrQG5 z%P3K^rjerNvC$D-k@6o(s^@?&r2bh~zCQm`c10Bu&Uw_0jCN0SQC9306yC8ME*}K@9SzB0JSzDW#nVVUfS-aTU z+B(=efoo>(;^^YyQn2=uxhX<}U|uHrXMHUx5;gF)+;PXJ>A1V*?DaKYVs}c5rZZ2HxOj2S0mzJ3B{53`cw`D|2%PC@GZH8vVd8 z{2U$8Z({>Yvp;-BI+zaeK>{cQ7Z4)*v$S+_vbF|^SelvH+oOv=Oz-4`&ra||9x!iv z_#wW%y$eXi%nZ|E-q!FlgCFvMbgZp09)AuFNQZky`YtY*H~xx|VrT&=h6bBR(Wo=< zVul$QkMY}XP@-npA|fWHWt-+e@(khf`_BQv}T!lrCM<5?t9IE7<0PO-YH5TZzp zZN|*f+ScAp;O^hJW!oV+xs&b@RyKAHrEAmvOb`s-F?)U zadTfFqfXVmyu+JD_ZX5pVctt*)UleUk1#5x=g{#J=f6S>m#X!A$>wc(<>XFS@ES3k ztJL+Qn#GESji0#ijYX+4)i_9rXX(&ejEs}mH`tdnTuv>9{$wJhaUu4;9Uzy{4b_Zl^Q=G@N? zuB9thspc6fY|*aE=xMX&e6cU(R-tNjuZH0*+jbo@efHe1cCMu>SE*JvjA|9vZS0I$ zbH3S@a;sFedc8(u>-OEp&73{=y9+W})w^MMbjKdKljbe>;f#z{@d*{ibm%#L^8AHA zoe-nCZzHlz=Ux-0%v^YWO%HG1`iY8u%T}z}e#G3Se2rRl zeEfowQwFSDy>`z@JI5->s1GGg9k?iO{oYfyPF0an zZ&H#rXz{uY+S3ls)eyr^m?Y0$0w!W->|LrOhHrSHV(`*+8!6Bhxy_H#u zHg4W~&a70Kn*Q}0G;Ad9o4I(?7VUZS(&cLeAx6Avz>8$Qgtu?z((O@A9epV+js81;ZV7nXFyPxkV;VvSi57_o|}#ptN0zDZPGHgohw)KK@3Wsk-dKNUiywprRv^@K`QzU-mpc>+$HQ>BchtM zXcgC6s$8`1z^QX)wxt?3ZQinVd$FYN;{69tpEq|X9f=t2;*(TM_8mBL!NT6H31YNO zNK`M~fAH)@OQ$l8n>3AX(^)LhEIV}M*d;5+vJsI{F|nO`OVgJhK6?DJwM)6iO`1oy z>6nn%Z^fY_C$88ymyd{S78BbcJ}G16;iD(7n%P!p+@xi6o9@YJnX3*RJ8_M$s~8d4 zA||$*EH!KO;o~Q-Ti91>+@y7Mo34En{ns2hcH)M)L*qK6{sNtr*#^L#Hm?dMnd6?mKtkmRYF^P1<(s+_k&7uV&N!^A~TMm#!QUhZymy zjLiqmUASZ6R;h7I#0+j8*y#k-besy1)izGIJGlD?X)hb~>YW>vOIvvzSEdWxjV z^lgVPU%hT!u6on9?K}7Am8kBw{m7*&H*CsRi)t6wsi!DOm9gXK<*PSsOI2vywtd$g zy^=Er?L2nr+6_C`imlqkb?GURWewbQ{POji_HLD0wr$_NN3TBp2k$;{<=PF0(v@4Z zi|f`?lrkWD&&jLTZ#tH(5{r!XOwAg&_td#tcbv*pZG(*VNXs0gJ$?T6UFY)EVh}?l zACOI-xp3=_OS$UNh|x>Ye=u|Q;_bTvFaO3(+lnQL$$ivA?mc+-V+l21PcDi$@IQu=@|+e5mac91+!_cf2%Jo-zE< zKTkipd)IH=w4*pdlBVc4;_;JbpX&I9L^kWxJ3c8@o<8!?KhOX5@NLkfd1rA#VwyrT z>hY5opKExAwutG{J6@J5A29mS)8}6VUJYADcNHfjrz!f6dHn3f*IISMTE%wj9iNga z&l>yB)92r6)@#(dO?PoZpEO10xF^qEe0TQ_ZyDVK8BH6Ud++7zAGLjiEn<2iqp8{B z@4tHU)5Di+-KG~}CP^1DzhUFH9TWO$`epW?bnor^ zA2k9(BieO{SEgrV4VZlY-G`qw0~Bub-zJ_XFmD#`MYO8Xp1gAQHB{_mG>^#U8U?%pf8ue$%B!E;}H{`%d!et2}(9tvc1(7cy# zfBf^YU&4-`)gt?<@ z@1Zbj7&~>*@{RkBpEI*?DkUBQvxad~7BAbh|JZrL+_`l8FvOU=WaZ`qCoh;;xVR8aiy`_=(e&tlV+*%vDQU`wGcJa>nFNn7eA-&i%)(S=l*M zlnos=di=yWtMhj4JANIe4wd>0$r+bBVfLC0yAPhY0aJ&{DMN>i9Y1l_+Vy)5oV-am zI#)?WM#nE)owxV!sas}FE>+Wz(cA^A)@cu&zHRR4TuqJ`6X&m8Pai#V$HK{_x&kpK z%v-a8IfDA5bQR^W$uMh}vuNYCedn&5m2#`vH)j&e8s;wEv~~aaYv!({tEq-gMT{kz zcO1BI)1s7Hb@h-bh_Q6b_JbF1Si-2T88vCj^mz-GZ2|>y+X_bY^pTUNPMg1Q`9@G6 zx2(&QtJH7Aq$xA!Em*N-`;jYmZOWFfoH2az)EV;^uH3xi=+!&6Whzw495-po?0E}T z?bIGSf6cCJ#mZS@Cr_OM&sRBaK6&A$qidCF11BP*^YeD?J$3n(Q>m)e2Tedm=dIhRJ$>o6bLlG8vd1IF!u5OT zGgt4pxK*t_I2SP%Y}n15y>eGj)7!uCkP(v>!^C0DmV3|M)~MwZ5HWQ4R)wKfsV495rk-1EA!TG`{&KS?jH3TG|w3|bMev@>o#nC z^7?aa&$^*4MvtGhXvyll^?U9={o?LbuVKqExw989UA1n*?t9O^!n`4@)!2!17A;wu zw|>{d=igx7(5Use33C@OU9)b(&Id2P3%q^9qsQdVLq^vzk6-?%;o~Qa89jbJGMYy} zdiArWw=dad+=K;)u|fOf^{-k!epKw(i3<^9{oa32e*}iN9WrV9(oHaN*nRKq*BSvq z!gfO^Pg}APCJuYI8>`bs9N!#`2AuckHGA`8VIAeuGAx zM@^ZzY}1zQTIR{;U!K9CVO>Vgn!k4A=3RT~r|-Ua)o<9S>zLW|)@<6cQ_DPi`?W62 z8@i31vvBps&3pFJ&p&*t2lIyRd{`|`?NJxn$&RLj;81$Qe^97BYM7JF>X3~C` zH=MY5@A2Cj5s@+NhK`=R59SRgFWi6hu4dyVZQAFIn{p5_&OdnazE(tJY}~N1Qx71< zxrhIJs10L!hvDO=?K^Pz)S0XIAANL(F}>r6-0Axd9y)#Y%Du;*>O?hb)oJ9!8T$?# zJ$2^t!+-wuXxhAW=TQ@8?mu|s^w~=fo_zL^pGs)S2tg-+ZeF6Nm0Od}Q?0ou{vU`ZkGf(`(d(1&DF>_KVlQ{32swMI$FJ zM2s`Hp1;ZWZ``(hk0Fz0A3P89h8y?ZehP?a7uR#>BRbpGO%+jpP5{~X$)Lzix& zC(k;0?!xt3cbntkH@#cQ|kKKuG3tQAZg#!j7c{M?0`x9&Xumfxr~ zOdQ5dnS1Q~#T&QpzWDwtJi2X+ip)*tnjei8B_SLX10azU33W<5QK3R&U&Q_}qP%Iz0biCQeA}yLi>6 z{fExqgQ>%d_vXFh<*FrXHy=29;UQwYvk)gJ)JxZFIe6sa1H^c12?M%j*}AR!4_&(V z;PK1XpRHg(PhXz5ZQtR`_a8ob_2yq|Nn)RVD>iIDc;w2x2TxwU{$wLfO37Hce#e2M zSMNXk=hd5!wvyyNnTuELJa+opy$8=;zW#0}m8E1YTD|M|sq6P2K7IA(n?1}L`Y(m| zma{kRJ$Ui*^;ZX&H4In+?=5F;-hcS~)tfJly;J1_m*?$0e(Dx7`YPW^oTeDGY@PPl z>D$QY%U{m%sq*ZV>*>C|nO`nZ)35)E?aYyjS02B8|M|zS z@=56#16J;!k6yU?=-r2Zf96+6)@1fywQ1+EYqwv#egE~xuZptttO2Vx?mB+`*7J8C zzWmIu)CXn_Yqsn@apUf@x9`9I_*FRtW({jM?>Tw%&eL}vzWvOvlByh-owsf8sq44i zAfrF4ru7{(c->a*>1(%NBcng6$yEch*YBXu+`RJ&G4iV`)Pn|Z*v_22arY%+{4!eF zhCKpqVa2e@gFDH|8vWJ)iTeR^e_UX}g<52WT+Vhf};WNcc5;?{U)hm&Jp_r8DL?PwHb<5nxc-OIULok|r$1FJZB zo0(hMx(Z6TjtjepQB9+8tMLyjScW}GUJ!-=;}tBUP`;pJb6hIBR_`k=_jbyPe6wXy zsrk0HHEQQi+TWsazPMe*rjY?&Zt?9~H4Cg;tCF{*j(c#qvK<_{REZ9Cc52BLrSV^t z1vf`aR2D=uDGLS^E(;sVmn9#TBa=su9`ZJy_#lajYV7|u-^ILU%{pg^xA|tJN|nPn zFq~!MAj*-8%Xh&z|F>`R9U3*Tsp!>mOu0JEM!MCC99G3UI=8HQ(-D>Gwi@en`i!$u zy=7y&_8qz`Ub1XeKwxm_{sV`OiQ^^7lc!9Zb?@b^bG$r;{FOj(Pq;(^K|~XQV1P~_ zGPbc}JLR|B*mX#*x>-D4L@JdkQNNucQz;YUMeb^TKSd-_$+N%?L9M|~2^}sTcC=uF zi8rj!_e_&bJ8t7l*DZcak)tEv4Ltn#&5a_r0s{=&XC)!Y8g>-TpV6jbNhopFB?7&T zh#*m%pi!vwv}JNZcYp7Io_hW`>k@+yQFOe;3D_A3aMw?txOl-8MMWnrX`0N3v$FY* zgbLOqmM%s8ABpi?C8TQBFPvHcA;6xfzAa#P^9eBS zZ;3J$XEkP8pIq2)E5abRVrZDQ34Y5RYy-d=P0d*-nB<~w=|IjzkN#h2Po!hYQ<1u| zpaw1|9@9o>iwfGkTTpi;$|vb6LxHn7;{A^JZbWsM2)HS#|WvPDod?U*JF<~L((5rqD_eq}Nh zmddol!=Q%tiZC?uI^57-O*%x8i6v6G0?YvaOLExBRU36ownrw5`$+|24R8W0$pSD$ z6a>m8J_;3Br3zpQh6+yK8o;_nmIfn~2rOZBcB)VUB&oAyQN!@aj*h9)e$rI5@l5nX4%Q-qIBM44CPNQuN70Y3a~x0|I@6rCtIsb;60CN-R&3f&zwd z9mjUVq^CF{{H!2RXXRTAMVKlGOy&y3(c>F)iAQNuIwpgwPPi(CLgUkho961YD{Ic` z;V$v8Cpdu+$}~a+3llJj&QubKP>0DxqF9x{dc-OoN$;|#$uU6$T2*T@Sx1#gsMyph zF1bpd-Y{2&8c?PcVa$Y8XE5vKs;WrD3@I90s|B9AfkCNI%QUinQo}T?h}4GpAe)hX z5MbZ93vwru%QUdjC6gGpEiPZ2->Q``w@S>Cg84BT6a#5dq9Pq;cHsg!XhZHroi)tn zY`oZJr%c257~U(ANi)IZSqkD!HW(uo6^k68DO92~12nEiB~23xxXe7EnxLP7ZM1tj zjF~J0pqCo~8i)hfgh?iJIxuWa%`#z9$Z@H+fz)T4phyE_KdA_e+>N_C7^Nl3lF~u( z;EWXwq_d@VA&E?J2hAgA0#{IHFcY*5Df*;`;STFNMufk%C+;(C=) zs)8)SBq+czOc#)bVO}ONtcVwW87?xFsBgMhf+G|d@Bg(<NhsP@gGPOXQ3a2h4Spv|=(zN(gsiYA%ae`$^DJ+b` zJA+EC(JP5!=^2(K4F~t|=p1(d;lHH^%l`iBrOU95mb+#yq3>G?kubRoL`QQ#$_Qv$)4h)xj|P_*FS z^a|Tb`IQ0I&sKrHRn{oF3F*#j8XYAm>I{xf#pzbdb#HyT-oc(ThW1{fQvI%3{}rL% ziTSSxl}OGkMOdW9gEw3wMOCa@CqR*NZ;r4+pP)#EH%o!>YbFfcg{$uOB>xAlI5s8h z;alBeqqv_~mMR7fRdP;rWKhta?0Ip++U5UB4(7*FRgvV1Y+Qu|pYUfjW3(n>(okW2 zHXYvnvHFT??EH>UF>J)ACxLQ;4uQ!fQg}?ldgsp9sRa^++(U!w2x<*1C&*FWMp*n{ zz^(~MJv}1faHYz_+an`crjdfnz0?2&@9qKq{sM$hfDnKGo?h@(8#rRGOjW>9Wp6k> z92ST{uuvh!QAebNvuy0CM73uCo)b2W^K=h}WoMy)Td)(<69mZWa(-hxRc7%t;Jxy9 zG1oc^&u>u1jrFt4z z^zw!oW0FaLhr$DS&4dmjP4)DU$$j7|0JW42%;E$2c`~dD2@H|2g0J?3Jtskc0RQ!@ z8vvV{KuIIhq(Tk1mnKMIeN7^0!QP!9h+}UkP_uMR_zf0>6yVpW)I7r`As+QuA_enl z%a60h8R;h-sBiq(HXDYU&grSJ7MP)u;k5>^QpVm5pjT43d|^EE(W!QmA*ST>pQ7ph z&A4U45ONK-Ti|sM#dYI?V-{KkX~gMpDocaYb2!f;s8ffv71D*00$jRI?mea@~z z>T^cCoAO!?QR;&?*)lenM!uiUg;+n#HS}F!cxC(=9rkCnhL|SX*v^q zR~&H@q@qTnesIAByPHs0{6&vFI*pHG^zR0a-!RMRMI0t2f|3p#e?#t%1Bad%7-#)o zXls5T(39mQXF}RA8Yz^}nLOOp9kd3uby@fD8Wrt+hUD78=k>Iv$mPBOR%dj!Az@@{i+E zVS>6TiYNiJf4n#$rKEG2qWTxx9{-1T@WSksl-Qq?$X{_*M1$c=+gBphz^<)AB}zz0 zNHkK|YVMLSw7kMQ$&7YwIMWV&gVQ9#tT$N!%Tq;~E;JIzlH>|_w}bKecX^6ZWpdbm z#>)Cr)+HswU1BDHOUwk^tX4nX;3_`cEah*orYKSlMm+JGE~W-JNCph!;7zi`Wh=Si z4SSCYYA)Ry3REJhEgZ6Q)uI zZ^5QxHn-x%*S~IyNE?9QTMf_ZbGb|5UyLBUH%?$P1d^E|P=sgi?_a$c+uSX$y&RK z85N&2Rh|U5qlj4(0kHCbp-~QR1voM8kGr;p-95tw7H`+dS#O^uuQ%R5+Yz;npBQ&ZiXc+9uY9Odf@IcGDg&^IUY5sk2F=5hS*#H z++ih8f(sVm`YZ(mB_u;-;Cv+k_N~z3tYCVjtRE~kL2}lEodRrFOk{^MZ|v%Zc3O-b zp}r>?Ce1~pWnbqDSoG>s8urBsr_|f7`GK(LF5SXG z;er(?2-j{zeZ^cWMXFq-nOaB&3UCDB4}cUPfyLvRIA=<0n9XAv;{lc93Z(!872F#s z_Jw?X(?l{@4mAzwi^>^-(%7jtD=c;$h!Y#8N+3ADp#UaC;g$**`izOjh;&3_bb7uZ z1uR8@M%XSQ#?S}@LJAa}&m1hy_<5sY=MZS?S_Nkmie|?JlJhuH*hJ?DaM#@xs6*aF z84pOnB5I;%CN6%bfz2lg>f6_!TP$OXVk9Cp$cR0S#g&n5XlzpvaWMp(uMj8w1u?i- zNiXvP)F8@8qFgRw72BA9Um$*v<5+|gu#e9-CAJ+x7sP=FRskSRrcsGiS^TYW#U^C; zHrWo0`v7cm(7XxB1q9F4n^ARh0Y>?-JPADc3)*60qngHuBHB0cVjBZ02HuPkyQxVh zD>kR1_BkLIT_fRknbGn$-Jala(S@sI31}UG1iRqvqfVA3YVc}T%-9pIDTTP;BIDqq zQiuyJG7fG@g*dnkwJ4%^Eh@yqji^P%;?<}S3%8;c6^qxSB4ub1MMXn68y^VQY8Dj_ z;a-FU2m}%m8LrTRRs_u{C=!>$4E{4F@Psr&|BMOTAtngskJ+P?5EsPsM_iN{;)2lr zh>H?rc>odq5t)@IVxvI+h|Nk@jKal9l1!5>krr-G5FcD@Jn#nbp~c37{2(60S6l`t zHNXI&6^DVc0t^sUaTq8e%moBg911HJz(KJThr>z(v}7=0w5wDcGGqy;p(Q~D82~EC zpaf)59IT=)2{K9skU=sfpo~I7Hb6)vz-HwI=qRrepzB0eAMRN$0Xm>@%=p6v+ag4NFu6#N)~k5(HOJm!uGg$R-I2Y!FhSVz7v8 zl92lKgGy8o77@Awr~so5<5!fv1ZEJ;sM8dQhFuuYjQenrcx+DwMB}bpBqH0P0nxZe z7m3LBYs}iXV;70Zb#Fj5>EA`7vQ0G}P>FarJp>bo!lHrI4v2;-1#5`nP!x(30zlxY zko(~&T5bS_duX}d>!F6^DyfG6u8D^kBO8px(1*hV8_@~w2k+zy|6oQF5CS*H>pehP ziRX+`1#lrfP=#tx#RmoQD6GeT0@>(LLV|e|)?+{k3D%=P=DM6%p8*Nk(h&kl@mQSC zfCbNbtdQV-EYIi)Jh@B+;7wH|DOi?6g41QlI=XrU@ahpTlAp|(Oq>iazx>Jt>`Vhg z?A7`(Pr}JsF;l1_ueIihq|0$-i@nTKgs&q=23_4*cHN7T={Z0PbNH%>xuu1fjg_^7 zy{(<2xs92#ist*qhW3TcT+ePn&*Db1zHkxkSsJ-iaAI<-|Tnl_U(j*3W+F)J%>WbPDQ z&$3K-4GU*YtJ0qFqZp-0!C`kCzl{ChR1R5h!8 zU|i3T%EA4-ZLE3=2>UiZ*5$&gb#iPQThXs!s9lu|-wNeL)omS~K6(7lz55RzT)Ter z#u|7X6=fVt5;pUwP@k;rHhxmST`UG?g@;!Jil35OLg-W&+{_ZYtl3NU0EQX zr|PRvzS-P9JKxRE>in!GvQWnwPOmq$8#H#mujPf=k$r5;YMQ^?5Zk|1UGI9A<~B|B zs8ieh)yB31Ej)d^F3yQcafR=MeEItQ8$+lTRRN-^**5V*%^%!dmN~4|8aY#oCalsgHBB&B^7O}RQ<56<4~epV42g?DQN|} zYDxUN1-llH7N+b=i73t=TaH{|ytl<07lFAc`(Y2=N&~x+Qw)`WzoVjG4=TV7EaQp6 zbOb&PqC1Ih*nSH!W>Nn(Vj!UVFoRKI-I|wSPmH^w+~k#2Pr-EA*YLJ)NNu>OK)-fm zSateObPDeQV%3;(V!HjuzsK{dmi#Ln)|D5iwi&!iOC$>8ajCI#K+TK*#;TtP9SVptq1M#M$%qsdUf+9Iswo6;%V?g}hq8=Bj1c6+gk3Z(me zYbm;x3y?6Wf}(4w$Xp5wxd7oJ#8cAhDjB6e*Vmuv6jNaZ)eTEXe{fma7r)&jf{}&& zNI<~~7o^GHYY6NrNih|#%H%o_YOmjl>?nN0>ET@=Y@~4gx>yI&y|WxCg~q2gT?;A~_h62@H>%taNB1wgKp3VgE^Q?i0gW z4C#$u0l$kiHb#|W=7lX# zjc9QuwSdK%KB2i37)j~Po^;Pf7Ed};PviY2)|^OZ!vq^6oav?-c7?^M-hxavS`GJv z3A*=$oYcU6kf~X%5kp|hB~HRC!qmp5Rh&tzF2c0|u)&;XbGq~>17-OJuvQ3D$=mvXkINb-L5eV4!n+T`U6E*B|tEV_#?b#f2_VV)f zP{+ef?7qH;$o>i;B9c!E*pf%X?p|m7;F*UvYbh>(kLSoFu!YCwqHq2BX#lrt$=0wy zpsRV*+yb2@hie1GNnTthFyfo1UYKuH63@49-R^85{9)HX5Fqsl>iMUVVA9`|q!{+t zw`-0;rLp#i;j|Xp#IuZ>g;6*t7vm-gLQ-ZG4id3hcn0Wf>DlJ2GS&K?NF)G84wgEN?;KhN6TB7=mE}?#VL@ zZA=M6DmE9c>80YFR^sWw>UcGK9w9X=QKs?m_U8}^x0(X&g%yuU3qb~rTZrENROyey zIZs$up-O-Ft`-{J!@dh{y_>c+q!q+*!WP~@3sk*8$#)<*03Ybo) zjhX>FxacEHb+TS@1xvBIP(iY$w0d;Nm>pD%13b8qLMN@3tUz>ZwPT-(I5rT1CBtw5 zx1Iw}h90Y*eBj*5uXq!F6C2kyk+GiqF1Hs>p7<3E?)8e>>)|I&@Yy7hGBp)XI2yi` zh)MK2>-x=f!@+w#ZJN#o%E$~LjothL-N9Z710O%dkLj43TOh#KIxTfB`r(r^Rt2AR z;TVTsHvLn4L3~|0Obef({SUs-{I@< zbo2^77Z)49dr6$~$kUogJlb3uG!NaKBiMZNF2PHKD3f1~oP?dTTAJXa+@tuU+0 zwa}fJUo3}59jd)d@~F(T4wr(rYCbyVMxXM|OMO{oUXNShdk6k7&uMa?=92garKhyN z5V%?O-hOPW6Lr`0d0uHww;N%*`+u_@+3ZN26^Z|po6+e?$o78!I!|bG#&^B^b+rY( z?vQl$FSDT$`)e!~-!C<}-T8n`ec#!QX?fghwd`5N*ITP<+WG}SEEIH$O*1`kKAytOs$^3%lpAq3xnYgm~8$~$Jo@h5?Do-`FcOe@#GT0$aWxQ>xC`qE!JiUr{9z}S!S z>8yNA%)K}>CH)H}Or}J-X^bdMmMN8pRAPw?ZfEhv>_O+URt@^Mbj0V)E0n2XdBG$i zIUorC$AoBIAd&S0<10KP7@s9*2Na9r02$RSKOJUHR!{Hl| zU^7Az87c*sj=;AG;W|F(=!831+2EoE&Rg^kz&6_5u!p1E)nJFho}vX!!I|(wUx5n+ z{4?D%3H?1?u&&9bVNHG@h5mvsxikZgTcU^ZwT;LFxI0-y1RdH7w&(t(H;a^(#6Y?prlD~%?jN8hmwV*etm@Q z8K;)|QzCG7FELe-L1;U+7h*ji)|x{h>ni!ENas+n&4`R&0&yH z4iLr39cq^UmMDJW842pm&In05Saz`2Js403k1!)L9>z31dK$&(gsV}cz?m1L8sq|u z+JvFl@Fq;aWVoLn+^`0Q!D&SP-~I?Qa|=r=Ya3fTKBc{bqm#3XYpK$1Wy+Q-U!h{9 z%2ldXt1hTfvlfT&r})2R;QtsO%42B*pRXiJ5%xr>Ql;QynS>SogYQY=KL`AWzfy#Y zJ;Yns+Yn}Mb`B73XAS=x2y0Bkr(`kte?}?oF(uF^%n3UTwnMV|c;iH@-_a<9^|Sx% zxM29td5n7Mv|&V($f%~xeComakAD~cOrk@L zniZX(8JB8Z#nIK$p=#-B9?5crvTwY=%Gw25aV6VwHlDT1SFp2pu3X){*07vGb?Vj& z7m`$D^Hwokx_0Z{qh~KsZ}?!BG%-omCnXiGtI6s=U?9;FzEGS5`iRxGx_3MxN|DB{ z3E?N?;S14thMZLbFd@VnZ_thyj~k2JE^MV9r1^gHyAh1mKDVHPK0&nl5E$vg{Xc z*|P=gS~Sj8*px6)#gjoW9|6;7P!_TTDG|#VSEqpmG|-1)DAHAc6`!uoB3goSR;kjJ zcs-;#3oNtKVBQLPSC0iDN(I=1!pG}iPNu&H0}^sJ`D&>&g@}aJP_+-29o#f0Pl5De zxa3t1iEv=!NfS}JQnFG6${@2ygTZVg>9ZL@#x|3{WFt zE*a5;{USCWjuzv1HC_RHc*G`PsKl0VRg%$T2RKy134#@RQ@EfV>kf8;`0RDk)Xf!$ z2!7H4(uCr%-#CW31QEyD-^&tMA%mfZLdmudIbP4CN9v%nWoJ)kqx{*zbJdHSvsD5! z=LEP<5852?`v0_XcDo6~FckKq>~=y-eTDr9iHlWiT#Va}fc}!AH7KiRBJ=vv$iA{+ZJ{7&s?>M6!hoz6h`4S~ zPHxgK$%Sn$g8JlR%bu*jO*q?w{&MO@MCHTagQyi_s6BS`wUp$@!(;qgtknJfsudqJx}#S{L*{bif7nLG10=^O-_?v64~WZlPRv(qH@V#}PuQn(`gP@dw6YIO2mEGsqWq pyL%f~i&3@UwmYuQqw35fgfYyf^~CDOTEA68@M~Su*@Nv*%^w)2Y~}y} diff --git a/quiet-profiles.json b/quiet-profiles.json deleted file mode 100644 index 03948c2..0000000 --- a/quiet-profiles.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "audible": { - "mod_scheme": "gmsk", - "checksum_scheme": "crc32", - "inner_fec_scheme": "v27", - "outer_fec_scheme": "none", - "frame_length": 100, - "modulation": { - "center_frequency": 4200, - "gain": 0.1 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 10, - "symbol_delay": 4, - "excess_bandwidth": 0.35 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - } - }, - "audible-7k-channel-0": { - "mod_scheme": "arb16opt", - "checksum_scheme": "crc32", - "inner_fec_scheme": "rs8", - "outer_fec_scheme": "v29", - "frame_length": 600, - "modulation": { - "center_frequency": 9200, - "gain": 0.1 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 6, - "symbol_delay": 4, - "excess_bandwidth": 0.31 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - }, - "ofdm": { - "num_subcarriers": 48, - "cyclic_prefix_length": 8, - "taper_length": 4, - "left_band": 0, - "right_band": 0 - } - }, - "audible-7k-channel-1": { - "mod_scheme": "arb16opt", - "checksum_scheme": "crc32", - "inner_fec_scheme": "rs8", - "outer_fec_scheme": "v29", - "frame_length": 600, - "modulation": { - "center_frequency": 15500, - "gain": 0.1 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 6, - "symbol_delay": 4, - "excess_bandwidth": 0.31 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - }, - "ofdm": { - "num_subcarriers": 48, - "cyclic_prefix_length": 8, - "taper_length": 4, - "left_band": 0, - "right_band": 0 - } - }, - "cable-64k": { - "mod_scheme": "qam1024", - "checksum_scheme": "crc32", - "inner_fec_scheme": "v27p23", - "outer_fec_scheme": "rs8", - "frame_length": 7500, - "modulation": { - "center_frequency": 10200, - "gain": 0.09 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 2, - "symbol_delay": 4, - "excess_bandwidth": 0.35 - }, - "encoder_filters": { - "dc_filter_alpha": 0.03 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - }, - "ofdm": { - "num_subcarriers": 128, - "cyclic_prefix_length": 16, - "taper_length": 8, - "left_band": 6, - "right_band": 12 - } - }, - "hello-world": { - "mod_scheme": "gmsk", - "checksum_scheme": "crc32", - "inner_fec_scheme": "v27", - "outer_fec_scheme": "none", - "frame_length": 25, - "modulation": { - "center_frequency": 4400, - "gain": 0.08 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 20, - "symbol_delay": 4, - "excess_bandwidth": 0.38 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - } - }, - "ultrasonic": { - "mod_scheme": "gmsk", - "checksum_scheme": "crc32", - "inner_fec_scheme": "v27", - "outer_fec_scheme": "none", - "frame_length": 75, - "modulation": { - "center_frequency": 19000, - "gain": 0.1 - }, - "interpolation": { - "shape": "rrcos", - "samples_per_symbol": 14, - "symbol_delay": 4, - "excess_bandwidth": 0.35 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - } - }, - "ultrasonic-3600": { - "ofdm": { - "num_subcarriers": 64, - "cyclic_prefix_length": 20, - "taper_length": 8, - "left_band": 4, - "right_band": 13 - }, - "mod_scheme": "V29", - "checksum_scheme": "crc8", - "inner_fec_scheme": "v27", - "outer_fec_scheme": "none", - "frame_length": 550, - "modulation": { - "center_frequency": 18500, - "gain": 0.1 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 7, - "symbol_delay": 4, - "excess_bandwidth": 0.33 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - } - }, - "ultrasonic-whisper": { - "mod_scheme": "gmsk", - "checksum_scheme": "crc32", - "inner_fec_scheme": "v27", - "outer_fec_scheme": "none", - "frame_length": 16, - "modulation": { - "center_frequency": 19500, - "gain": 0.1 - }, - "interpolation": { - "shape": "rrcos", - "samples_per_symbol": 30, - "symbol_delay": 4, - "excess_bandwidth": 0.35 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - } - }, - "ultrasonic-experimental": { - "mod_scheme": "bpsk", - "checksum_scheme": "crc32", - "inner_fec_scheme": "rs8", - "outer_fec_scheme": "v29", - "frame_length": 100, - "modulation": { - "center_frequency": 19000, - "gain": 0.2 - }, - "interpolation": { - "shape": "kaiser", - "samples_per_symbol": 10, - "symbol_delay": 4, - "excess_bandwidth": 0.31 - }, - "encoder_filters": { - "dc_filter_alpha": 0.01 - }, - "resampler": { - "delay": 13, - "bandwidth": 0.45, - "attenuation": 60, - "filter_bank_size": 64 - }, - "header": { - "checksum_scheme": "crc32", - "inner_fec_scheme": "secded7264", - "outer_fec_scheme": "v29", - "mod_scheme": "bpsk" - } - } -} diff --git a/quiet.js b/quiet.js deleted file mode 100644 index 73b2136..0000000 --- a/quiet.js +++ /dev/null @@ -1,954 +0,0 @@ -/* Copyright 2016, Brian Armstrong - * quiet.js includes compiled portions from other sources - * - liquid DSP, Copyright (c) 2007-2016 Joseph Gaeddert - * - libjansson, Copyright (c) 2009-2016 Petri Lehtinen - * - emscripten, Copyright (c) 2010-2016 Emscripten authors - */ - -/** @namespace */ -var Quiet = (function() { - // sampleBufferSize is the number of audio samples we'll write per onaudioprocess call - // must be a power of two. we choose the absolute largest permissible value - // we implicitly assume that the browser will play back a written buffer without any gaps - var sampleBufferSize = 16384; - - // initialization flags - var emscriptenInitialized = false; - var profilesFetched = false; - - // profiles is the string content of quiet-profiles.json - var profiles; - - // our local instance of window.AudioContext - var audioCtx; - - // consumer callbacks. these fire once quiet is ready to create transmitter/receiver - var readyCallbacks = []; - var readyErrbacks = []; - var failReason = ""; - - // these are used for receiver only - var gUM; - var audioInput; - var audioInputFailedReason = ""; - var audioInputReadyCallbacks = []; - var audioInputFailedCallbacks = []; - var frameBufferSize = Math.pow(2, 14); - - // anti-gc - var receivers = {}; - var receivers_idx = 0; - - // isReady tells us if we can start creating transmitters and receivers - // we need the emscripten portion to be running and we need our - // async fetch of the profiles to be completed - function isReady() { - return emscriptenInitialized && profilesFetched; - }; - - function isFailed() { - return failReason !== ""; - }; - - // start gets our AudioContext and notifies consumers that quiet can be used - function start() { - var len = readyCallbacks.length; - for (var i = 0; i < len; i++) { - readyCallbacks[i](); - } - }; - - function initAudioContext() { - if (audioCtx === undefined) { - audioCtx = new (window.AudioContext || window.webkitAudioContext)(); - console.log(audioCtx.sampleRate); - } - }; - - function fail(reason) { - failReason = reason; - var len = readyErrbacks.length; - for (var i = 0; i < len; i++) { - readyErrbacks[i](reason); - } - }; - - function checkInitState() { - if (isReady()) { - start(); - } - }; - - function onProfilesFetch(p) { - profiles = p; - profilesFetched = true; - checkInitState(); - }; - - // this is intended to be called only by emscripten - function onEmscriptenInitialized() { - emscriptenInitialized = true; - checkInitState(); - }; - - function setProfilesPrefix(prefix) { - if (profilesFetched) { - return; - } - if (!prefix.endsWith("/")) { - prefix += "/"; - } - var profilesPath = prefix + "quiet-profiles.json"; - - var fetch = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.overrideMimeType("application/json"); - xhr.open("GET", profilesPath, true); - xhr.onload = function() { - if (this.status >= 200 && this.status < 300) { - resolve(this.responseText); - } else { - reject(this.statusText); - } - }; - xhr.onerror = function() { - reject(this.statusText); - }; - xhr.send(); - }); - - fetch.then(function(body) { - onProfilesFetch(body); - }, function(err) { - fail("fetch of quiet-profiles.json failed: " + err); - }); - }; - - function setMemoryInitializerPrefix(prefix) { - Module.memoryInitializerPrefixURL = prefix; - }; - - function setLibfecPrefix(prefix) { - Module.dynamicLibraries = Module.dynamicLibraries || []; - Module.dynamicLibraries.push(prefix + "libfec.js"); - }; - - /** - * Callback to notify user that quiet.js failed to initialize - * - * @callback onError - * @memberof Quiet - * @param {string} reason - error message related to failure - */ - - /** - * Add a callback to be called when Quiet is ready for use, e.g. when transmitters and receivers can be created. - * @function addReadyCallback - * @memberof Quiet - * @param {function} c - The user function which will be called - * @param {onError} [onError] - User errback function - * @example - * addReadyCallback(function() { console.log("ready!"); }); - */ - function addReadyCallback(c, errback) { - if (isReady()) { - c(); - return; - } - readyCallbacks.push(c); - if (errback !== undefined) { - if (isFailed()) { - errback(failReason); - return; - } - readyErrbacks.push(errback); - } - }; - - /** - * Callback to notify user that quiet.js failed to initialize - * - * @callback onError - * @memberof Quiet - * @param {string} reason - error message related to failure - */ - - /** - * Initialize Quiet and set up a callback to be called when Quiet is ready - * @function init - * @memberof Quiet - * @param {object} opts - configuration options - * @param {string} opts.profilesPrefix - path prefix to quiet-profiles.json - * this file configures transmitter and receiver parameters - * @param {string} opts.memoryInitializerPrefix - path prefix to quiet-emscripten.js.mem - * @param {string} [opts.libfecPrefix] - path prefix to libfec.js - * @param {function} [opts.onReady] - Quiet ready callback - * @param {onError} [opts.onError] - User errback function - * @example - * Quiet.init({ - * profilesPrefix: "/", // fetches /quiet-profiles.json - * memoryInitializerPrefix: "/", // fetches /quiet-emscripten.js.mem - * libfecPrefix: "/", // fetches /libfec.js - * onReady: function() { console.log("quiet is ready"); }, - * onError: function(reason) { console.log("quiet failed to start: " + reason); } - * }); - */ - function init(opts) { - if (opts.profilesPrefix !== undefined) { - setProfilesPrefix(opts.profilesPrefix); - } - - if (opts.memoryInitializerPrefix !== undefined) { - setMemoryInitializerPrefix(opts.memoryInitializerPrefix); - } - - if (opts.libfecPrefix !== undefined) { - setLibfecPrefix(opts.libfecPrefix); - } - - if (opts.onReady !== undefined) { - if (opts.onError !== undefined) { - addReadyCallback(opts.onReady, opts.onError); - } else { - addReadyCallback(opts.onReady); - } - } - }; - - - - /** - * Callback for user to provide data to a Quiet transmitter - * @callback transmit - * @memberof Quiet - * @param {ArrayBuffer} payload - bytes which will be encoded and sent to speaker - * @example - * transmit(Quiet.str2ab("Hello, World!")); - */ - - /** - * @typedef Transmitter - * @type object - * @property {transmit} transmit - queue up array buffer and begin transmitting - * @property {function} destroy - immediately stop playback and release all resources - * @property {Number} frameLength - length in bytes of each underlying transmit frame. - * calls to transmit() will automatically slice passed arraybuffer into frames of - * this length or shorter - * @property {function} getAverageEncodeTime - returns average time in ms spent encoding data - * into sound samples over the last 3 runs - */ - - /** - * Create a new transmitter configured by the given profile name. - * @function transmitter - * @memberof Quiet - * @param {object} opts - transmitter params - * @param {string|object} opts.profile - name of profile to use, must be a key in quiet-profiles.json OR an object which contains a single profile - * @param {function} [opts.onFinish] - user callback which will notify user when playback of all data in queue is complete - * if the user calls transmit multiple times before waiting for onFinish, then onFinish will be called only once after - * all of the data has been played out - * @param {function} [opts.onEnqueue] - user callback which will notify user when all data passed - * to transmit() has been written to the transmit queue and has thus entered the transmit - * pipeline. for convenience, quiet.js is designed to hold as much data as you ask it to and - * write it to the libquiet transmit queue over time. this callback is handy because it - * informs the user that all data resides in libquiet, which is useful if you would like - * to stream data to the transmitter. this callback is the appropriate place to stream the - * next chunk. doing so will prevent excess memory bloat while maintaining the maximum - * transmit throughput. if the user calls transmit multiple times before waiting for - * onEnqueue, then onEnqueue will be called only once after all of the data has been - * played out - * @param {boolean} [clampFrame] - Prevent frames from overlapping sample blocks. - * Web Audio collects sound samples in blocks, and the browser ensures that each - * block plays out smoothly and atomically. However, it is possible for playback - * gaps to occur between these blocks due to GC pause or similar conditions. - * This is especially common on mobile. Enabling this flag ensures that data frames do - * not overlap these sample blocks so that no playback gaps will occur within a frame, - * which greatly degrades error performance. Setting this flag to false will increase - * throughput but can significantly increase error rate. Defaults to true. - * @returns {Transmitter} - Transmitter object - * @example - * var tx = transmitter({profile: "robust", onFinish: function () { console.log("transmission complete"); }}); - * tx.transmit(Quiet.str2ab("Hello, World!")); - */ - function transmitter(opts) { - var profile = opts.profile; - var c_profiles, c_profile; - if (typeof profile === 'object') { - c_profiles = Module.intArrayFromString(JSON.stringify({"profile": profile})); - c_profile = Module.intArrayFromString("profile"); - } else { - // get an encoder_options object for our quiet-profiles.json and profile key - c_profiles = Module.intArrayFromString(profiles); - c_profile = Module.intArrayFromString(profile); - } - - initAudioContext(); - var done = opts.onFinish; - - var opt = Module.ccall('quiet_encoder_profile_str', 'pointer', ['array', 'array'], [c_profiles, c_profile]); - - // libquiet internally works at 44.1kHz but the local sound card - // may be a different rate. we inform quiet about that here - var encoder = Module.ccall('quiet_encoder_create', 'pointer', ['pointer', 'number'], [opt, audioCtx.sampleRate]); - - Module.ccall('free', null, ['pointer'], [opt]); - - if (opts.clampFrame === undefined) { - opts.clampFrame = true; - } - - var frame_len; - if (opts.clampFrame) { - // enable close_frame which prevents data frames from overlapping multiple - // sample buffers. this is very convenient if our system is not fast enough - // to feed the sound card without any gaps between subsequent buffers due - // to e.g. gc pause. inform quiet about our sample buffer size here - frame_len = Module.ccall('quiet_encoder_clamp_frame_len', 'number', ['pointer', 'number'], [encoder, sampleBufferSize]); - } else { - frame_len = Module.ccall('quiet_encoder_get_frame_len', 'number', ['pointer'], [encoder]); - } - var samples = Module.ccall('malloc', 'pointer', ['number'], [4 * sampleBufferSize]); - - // yes, this is pointer arithmetic, in javascript :) - var sample_view = Module.HEAPF32.subarray((samples/4), (samples/4) + sampleBufferSize); - - var dummy_osc; - - // we'll start and stop transmitter as needed - // if we have something to send, start it - // if we are done talking, stop it - var running = false; - var transmitter; - - // prevent races with callbacks on destroyed in-flight objects - var destroyed = false; - - var onaudioprocess = function(e) { - var output_l = e.outputBuffer.getChannelData(0); - - if (played === true) { - // we've already played what's in sample_view, and it hasn't been - // rewritten for whatever reason, so just play out silence - for (var i = 0; i < sampleBufferSize; i++) { - output_l[i] = 0; - } - return; - } - - played = true; - - output_l.set(sample_view); - window.setTimeout(writebuf, 0); - }; - - var startTransmitter = function () { - if (destroyed) { - return; - } - if (transmitter === undefined) { - // we have to start transmitter here because mobile safari wants it to be in response to a - // user action - var script_processor = (audioCtx.createScriptProcessor || audioCtx.createJavaScriptNode); - // we want a single input because some implementations will not run a node without some kind of source - // we want two outputs so that we can explicitly silence the right channel and no mixing will occur - transmitter = script_processor.call(audioCtx, sampleBufferSize, 1, 2); - transmitter.onaudioprocess = onaudioprocess; - // put an input node on the graph. some browsers require this to run our script processor - // this oscillator will not actually be used in any way - dummy_osc = audioCtx.createOscillator(); - dummy_osc.type = 'square'; - dummy_osc.frequency.value = 420; - - } - dummy_osc.connect(transmitter); - transmitter.connect(audioCtx.destination); - running = true; - }; - - var stopTransmitter = function () { - if (destroyed) { - return; - } - dummy_osc.disconnect(); - transmitter.disconnect(); - running = false; - }; - - // we are only going to keep one chunk of samples around - // ideally there will be a 1:1 sequence between writebuf and onaudioprocess - // but just in case one gets ahead of the other, this flag will prevent us - // from throwing away a buffer or playing a buffer twice - var played = true; - - // payload is a list of ArrayBuffers, each one frame or smaller in length - var payload = []; - var payloadView = new Uint8Array(payload); - - // unfortunately, we need to flush out the browser's sound sample buffer ourselves - // the way we do this is by writing empty blocks once we're done and *then* we can disconnect - var empties_written = 0; - - // measure some stats about encoding time for user - var last_emit_times = []; - var num_emit_times = 3; - - // writebuf calls _send and _emit on the encoder - // first we push as much payload as will fit into encoder's tx queue - // then we create the next sample block (if played = true) - var writebuf = function() { - if (destroyed) { - return; - } - // fill as much of quiet's transmit queue as possible - var frame_available = false; - var frame_written = false; - while(true) { - var frame = payload.shift(); - if (frame === undefined) { - break; - } - frame_available = true; - var written = Module.ccall('quiet_encoder_send', 'number', ['pointer', 'array', 'number'], [encoder, new Uint8Array(frame), frame.byteLength]); - if (written === -1) { - payload.unshift(frame); - break; - } - frame_written = true; - } - - if (payload.length === 0 && frame_written === true) { - // we wrote at least one frame and emptied out payload, our local (js) tx queue - // this means we have transitioned to having all data in libquiet - // notify user about this if they like - // this is an important transition point because it allows user to control - // memory util without sacrificing throughput as would be the case for waiting - // for onFinish, which is only called after everything has flushed - if (opts.onEnqueue !== undefined) { - window.setTimeout(opts.onEnqueue, 0); - } - } - - if (frame_available === true && running === false) { - startTransmitter(); - } - - // now set the sample block - if (played === false) { - // the existing sample block has yet to be played - // we are done - return; - } - - var before = new Date(); - var written = Module.ccall('quiet_encoder_emit', 'number', ['pointer', 'pointer', 'number'], [encoder, samples, sampleBufferSize]); - var after = new Date(); - - last_emit_times.unshift(after - before); - if (last_emit_times.length > num_emit_times) { - last_emit_times.pop(); - } - - // libquiet notifies us that the payload is finished by - // returning written < number of samples we asked for - if (frame_available === false && written === -1) { - if (empties_written < 3) { - // flush out browser's sound sample buffer before quitting - for (var i = 0; i < sampleBufferSize; i++) { - sample_view[i] = 0; - } - empties_written++; - played = false; - return; - } - // looks like we are done - // user callback - if (done !== undefined) { - done(); - } - if (running === true) { - stopTransmitter(); - } - return; - } - - played = false; - empties_written = 0; - - // in this case, we are sending data, but the whole block isn't full (we're near the end) - if (written < sampleBufferSize) { - // be extra cautious and 0-fill what's left - // (we want the end of transmission to be silence, not potentially loud noise) - for (var i = written; i < sampleBufferSize; i++) { - sample_view[i] = 0; - } - } - - }; - - var transmit = function(buf) { - if (destroyed) { - return; - } - // slice up into frames and push the frames to a list - for (var i = 0; i < buf.byteLength; ) { - var frame = buf.slice(i, i + frame_len); - i += frame.byteLength; - payload.push(frame); - } - // now do an update. this may or may not write samples - writebuf(); - }; - - var destroy = function() { - if (destroyed) { - return; - } - Module.ccall('free', null, ['pointer'], [samples]); - Module.ccall('quiet_encoder_destroy', null, ['pointer'], [encoder]); - if (running === true) { - stopTransmitter(); - } - destroyed = true; - }; - - var getAverageEncodeTime = function() { - if (last_emit_times.length === 0) { - return 0; - } - var total = 0; - for (var i = 0; i < last_emit_times.length; i++) { - total += last_emit_times[i]; - } - return total/(last_emit_times.length); - }; - - return { - transmit: transmit, - destroy: destroy, - frameLength: frame_len, - getAverageEncodeTime: getAverageEncodeTime - }; - }; - - // receiver functions - - function audioInputReady() { - var len = audioInputReadyCallbacks.length; - for (var i = 0; i < len; i++) { - audioInputReadyCallbacks[i](); - } - }; - - function audioInputFailed(reason) { - audioInputFailedReason = reason; - var len = audioInputFailedCallbacks.length; - for (var i = 0; i < len; i++) { - audioInputFailedCallbacks[i](audioInputFailedReason); - } - }; - - function addAudioInputReadyCallback(c, errback) { - if (errback !== undefined) { - if (audioInputFailedReason !== "") { - errback(audioInputFailedReason); - return - } - audioInputFailedCallbacks.push(errback); - } - if (audioInput instanceof MediaStreamAudioSourceNode) { - c(); - return - } - audioInputReadyCallbacks.push(c); - } - - function gUMConstraints() { - if (navigator.webkitGetUserMedia !== undefined) { - return { - audio: { - optional: [ - {googAutoGainControl: false}, - {googAutoGainControl2: false}, - {echoCancellation: false}, - {googEchoCancellation: false}, - {googEchoCancellation2: false}, - {googDAEchoCancellation: false}, - {googNoiseSuppression: false}, - {googNoiseSuppression2: false}, - {googHighpassFilter: false}, - {googTypingNoiseDetection: false}, - {googAudioMirroring: false} - ] - } - }; - } - if (navigator.mozGetUserMedia !== undefined) { - return { - audio: { - echoCancellation: false, - mozAutoGainControl: false, - mozNoiseSuppression: false - } - }; - - } - return { - audio: { - echoCancellation: false - } - }; - }; - - - function createAudioInput() { - audioInput = 0; // prevent others from trying to create - window.setTimeout(function() { - gUM.call(navigator, gUMConstraints(), - function(e) { - audioInput = audioCtx.createMediaStreamSource(e); - - // stash a very permanent reference so this isn't collected - window.quiet_receiver_anti_gc = audioInput; - - audioInputReady(); - }, function(reason) { - audioInputFailed(reason.name); - }); - }, 0); - }; - - /** - * @typedef Receiver - * @type object - * @property {function} destroy - immediately stop sampling microphone and release all resources - * @property {function} getAverageDecodeTime - returns average time in ms spent decoding data - * from sound samples over the last 3 runs - */ - - /** - * @typedef Complex - * @type object - * @property {Number} real - real valued component - * @property {Number} imag - imaginary valued component - */ - - /** - * @typedef ReceiverStats - * @type object - * @property [Array] symbols - received complex symbols - * @property {Number} receivedSignalStrengthIndicator - strength of received signal, in dB - * @property {Number} errorVectorMagnitude - magnitude of error vector between received symbols - * and reference symbols, in dB - */ - - /** - * Callback used by receiver to notify user that new decoder stats were - * generated. These stats provide instrumentation into the decoding process. - * - * @callback onReceiverStatsUpdate - * @memberof Quiet - * @param {Array} stats - Array of stats objects, one per frame detected by decoder - */ - - /** - * Callback used by receiver to notify user that a frame was received but - * failed checksum. Frames that fail checksum are not sent to onReceive. - * - * @callback onReceiveFail - * @memberof Quiet - * @param {number} total - total number of frames failed across lifetime of receiver - */ - - /** - * Callback used by receiver to notify user of errors in creating receiver. - * This is a callback because frequently this will result when the user denies - * permission to use the mic, which happens long after the call to create - * the receiver. - * - * @callback onReceiverCreateFail - * @memberof Quiet - * @param {string} reason - error message related to create fail - */ - - /** - * Callback used by receiver to notify user of data received via microphone/line-in. - * - * @callback onReceive - * @memberof Quiet - * @param {ArrayBuffer} payload - chunk of data received - */ - - /** - * Create a new receiver with the profile specified by profile (should match profile of transmitter). - * @function receiver - * @memberof Quiet - * @param {object} opts - receiver params - * @param {string|object} opts.profile - name of profile to use, must be a key in quiet-profiles.json OR an object which contains a complete profile - * @param {onReceive} opts.onReceive - callback which receiver will call to send user received data - * @param {function} [opts.onCreate] - callback to notify user that receiver has been created and is ready to receive. if the user needs to grant permission to use the microphone, this callback fires after that permission is granted. - * @param {onReceiverCreateFail} [opts.onCreateFail] - callback to notify user that receiver could not be created - * @param {onReceiveFail} [opts.onReceiveFail] - callback to notify user that receiver received corrupted data - * @param {onReceiverStatsUpdate} [opts.onReceiverStatsUpdate] - callback to notify user with new decode stats - * @returns {Receiver} - Receiver object - * @example - * receiver({profile: "robust", onReceive: function(payload) { console.log("received chunk of data: " + Quiet.ab2str(payload)); }}); - */ - function receiver(opts) { - var profile = opts.profile; - var c_profiles, c_profile; - if (typeof profile === 'object') { - c_profiles = Module.intArrayFromString(JSON.stringify({"profile": profile})); - c_profile = Module.intArrayFromString("profile"); - } else { - c_profiles = Module.intArrayFromString(profiles); - c_profile = Module.intArrayFromString(profile); - } - var opt = Module.ccall('quiet_decoder_profile_str', 'pointer', ['array', 'array'], [c_profiles, c_profile]); - - initAudioContext(); - // quiet does not create an audio input when it starts - // getting microphone access requires a permission dialog so only ask for it if we need it - if (gUM === undefined) { - gUM = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia); - } - - if (gUM === undefined) { - // we couldn't find a suitable getUserMedia, so fail fast - if (opts.onCreateFail !== undefined) { - opts.onCreateFail("getUserMedia undefined (mic not supported by browser)"); - } - return; - } - - if (audioInput === undefined) { - createAudioInput() - } - - // TODO investigate if this still needs to be placed on window. - // seems this was done to keep it from being collected - var scriptProcessor = audioCtx.createScriptProcessor(16384, 2, 1); - var idx = receivers_idx; - receivers[idx] = scriptProcessor; - receivers_idx++; - - // inform quiet about our local sound card's sample rate so that it can resample to its internal sample rate - var decoder = Module.ccall('quiet_decoder_create', 'pointer', ['pointer', 'number'], [opt, audioCtx.sampleRate]); - - Module.ccall('free', null, ['pointer'], [opt]); - - var samples = Module.ccall('malloc', 'pointer', ['number'], [4 * sampleBufferSize]); - - var frame = Module.ccall('malloc', 'pointer', ['number'], [frameBufferSize]); - - if (opts.onReceiverStatsUpdate !== undefined) { - Module.ccall('quiet_decoder_enable_stats', null, ['pointer'], [decoder]); - } - - var destroyed = false; - - var readbuf = function() { - if (destroyed) { - return; - } - while (true) { - var read = Module.ccall('quiet_decoder_recv', 'number', ['pointer', 'pointer', 'number'], [decoder, frame, frameBufferSize]); - if (read === -1) { - break; - } - // convert from emscripten bytes to js string. more pointer arithmetic. - var frameArray = Module.HEAP8.slice(frame, frame + read); - opts.onReceive(frameArray.buffer); - } - }; - - var lastChecksumFailCount = 0; - var last_consume_times = []; - var num_consume_times = 3; - var consume = function() { - if (destroyed) { - return; - } - var before = new Date(); - Module.ccall('quiet_decoder_consume', 'number', ['pointer', 'pointer', 'number'], [decoder, samples, sampleBufferSize]); - var after = new Date(); - - last_consume_times.unshift(after - before); - if (last_consume_times.length > num_consume_times) { - last_consume_times.pop(); - } - - window.setTimeout(readbuf, 0); - - var currentChecksumFailCount = Module.ccall('quiet_decoder_checksum_fails', 'number', ['pointer'], [decoder]); - if ((opts.onReceiveFail !== undefined) && (currentChecksumFailCount > lastChecksumFailCount)) { - window.setTimeout(function() { opts.onReceiveFail(currentChecksumFailCount); }, 0); - } - lastChecksumFailCount = currentChecksumFailCount; - - if (opts.onReceiverStatsUpdate !== undefined) { - var num_frames_ptr = Module.ccall('malloc', 'pointer', ['number'], [4]); - var frames = Module.ccall('quiet_decoder_consume_stats', 'pointer', ['pointer', 'pointer'], [decoder, num_frames_ptr]); - // time for some more pointer arithmetic - var num_frames = Module.HEAPU32[num_frames_ptr/4]; - Module.ccall('free', null, ['pointer'], [num_frames_ptr]); - - var framesize = 4 + 4 + 4 + 4 + 4; - var stats = []; - - for (var i = 0; i < num_frames; i++) { - var frameStats = {}; - var frame = (frames + i*framesize)/4; - var symbols = Module.HEAPU32[frame]; - var num_symbols = Module.HEAPU32[frame + 1]; - frameStats.errorVectorMagnitude = Module.HEAPF32[frame + 2]; - frameStats.receivedSignalStrengthIndicator = Module.HEAPF32[frame + 3]; - - frameStats.symbols = []; - for (var j = 0; j < num_symbols; j++) { - var symbol = (symbols + 8*j)/4; - frameStats.symbols.push({ - real: Module.HEAPF32[symbol], - imag: Module.HEAPF32[symbol + 1] - }); - } - stats.push(frameStats); - } - opts.onReceiverStatsUpdate(stats); - } - } - - scriptProcessor.onaudioprocess = function(e) { - if (destroyed) { - return; - } - var input = e.inputBuffer.getChannelData(0); - var sample_view = Module.HEAPF32.subarray(samples/4, samples/4 + sampleBufferSize); - sample_view.set(input); - - window.setTimeout(consume, 0); - } - - // if this is the first receiver object created, wait for our input node to be created - addAudioInputReadyCallback(function() { - audioInput.connect(scriptProcessor); - if (opts.onCreate !== undefined) { - window.setTimeout(opts.onCreate, 0); - } - }, opts.onCreateFail); - - // more unused nodes in the graph that some browsers insist on having - var fakeGain = audioCtx.createGain(); - fakeGain.value = 0; - scriptProcessor.connect(fakeGain); - fakeGain.connect(audioCtx.destination); - - var destroy = function() { - if (destroyed) { - return; - } - fakeGain.disconnect(); - scriptProcessor.disconnect(); - Module.ccall('free', null, ['pointer'], [samples]); - Module.ccall('free', null, ['pointer'], [frame]); - Module.ccall('quiet_decoder_destroy', null, ['pointer'], [decoder]); - delete receivers[idx]; - destroyed = true; - }; - - var getAverageDecodeTime = function() { - if (last_consume_times.length === 0) { - return 0; - } - var total = 0; - for (var i = 0; i < last_consume_times.length; i++) { - total += last_consume_times[i]; - } - return total/(last_consume_times.length); - }; - - return { - destroy: destroy, - getAverageDecodeTime: getAverageDecodeTime - } - }; - - /** - * Convert a string to array buffer in UTF8 - * @function str2ab - * @memberof Quiet - * @param {string} s - string to be converted - * @returns {ArrayBuffer} buf - converted arraybuffer - */ - function str2ab(s) { - var s_utf8 = unescape(encodeURIComponent(s)); - var buf = new ArrayBuffer(s_utf8.length); - var bufView = new Uint8Array(buf); - for (var i = 0; i < s_utf8.length; i++) { - bufView[i] = s_utf8.charCodeAt(i); - } - return buf; - }; - - /** - * Convert an array buffer in UTF8 to string - * @function ab2str - * @memberof Quiet - * @param {ArrayBuffer} ab - array buffer to be converted - * @returns {string} s - converted string - */ - function ab2str(ab) { - return decodeURIComponent(escape(String.fromCharCode.apply(null, new Uint8Array(ab)))); - }; - - /** - * Merge 2 ArrayBuffers - * This is a convenience function to assist user receiver functions that - * want to aggregate multiple payloads. - * @function mergeab - * @memberof Quiet - * @param {ArrayBuffer} ab1 - beginning ArrayBuffer - * @param {ArrayBuffer} ab2 - ending ArrayBuffer - * @returns {ArrayBuffer} buf - ab1 merged with ab2 - */ - function mergeab(ab1, ab2) { - var tmp = new Uint8Array(ab1.byteLength + ab2.byteLength); - tmp.set(new Uint8Array(ab1), 0); - tmp.set(new Uint8Array(ab2), ab1.byteLength); - return tmp.buffer; - }; - - /** - * Disconnect quiet.js from its microphone source - * This will disconnect quiet.js's microphone fully from all receivers - * This is useful to cause the browser to stop displaying the microphone icon - * Browser support is limited for disconnecting a single destination, so this - * call will disconnect all receivers. - * It is highly recommended to call this only after destroying any receivers. - * @function disconnect - */ - function disconnect() { - if (audioInput !== undefined) { - audioInput.disconnect(); - audioInput = undefined; - delete window.quiet_receiver_anti_gc; - } - }; - - return { - emscriptenInitialized: onEmscriptenInitialized, - addReadyCallback: addReadyCallback, - init: init, - transmitter: transmitter, - receiver: receiver, - str2ab: str2ab, - ab2str: ab2str, - mergeab: mergeab, - disconnect: disconnect - }; -})(); - -// extend emscripten Module -var Module = { - onRuntimeInitialized: Quiet.emscriptenInitialized, - memoryInitializerPrefixURL: "" -}; diff --git a/src/backend/constants.mjs b/src/backend/constants.mjs new file mode 100644 index 0000000..c12e9aa --- /dev/null +++ b/src/backend/constants.mjs @@ -0,0 +1,4 @@ + +export const INPUT_CHANNELS = 1 +export const OUTPUT_CHANNELS = 1 +export const SAMPLE_BUFFER_SIZE = 1 << 14 diff --git a/src/backend/generic.mjs b/src/backend/generic.mjs new file mode 100644 index 0000000..41ab8f5 --- /dev/null +++ b/src/backend/generic.mjs @@ -0,0 +1,95 @@ + +import { SAMPLE_BUFFER_SIZE } from './constants' +import profiles, { profileKeys } from '../profiles.mjs' + +export const $interface = Symbol( 'audioBackendInterface' ) + +class EventEmitter { + constructor( ) { + this.registry = { } + } + + on( e, fn ) { + if( e in this.registry ) { + return this.registry[ e ].push( fn ) + } + return this.registry[ e ] = [ fn ] + } + + once( e, fn ) { + const closure = ( ... args ) => { + fn( ... args ) + this.off( e, closure ) + } + + this.on( e, closure ) + } + + off( e, fn ) { + if( ! e in this.registry ) { + return + } + + const filtered = this.registry[ e ].filter( f => f !== fn ) + if( filtered.length ) { + return this.registry[ e ] = filtered + } + return delete this.registry[ e ] + } + + emit( e, ... args ) { + if( ! e in this.registry ) { + return; + } + + this.registry[ e ].forEach( f => f( ... args ) ) + } +} + +class NotImplementedError extends Error { + constructor( ) { + super( 'Not implemented' ) + this.name = this.constructor.name + } +} + +export default class GenericAudioBackend extends EventEmitter { + constructor( profileKey ) { + super( ) + this.context = new AudioContext( { + latencyHint: 'playback' + } ) + this.profileKey = profileKey + this.profile = profiles[ profileKey ] + } + + getContext( ) { + return this.context + } + + getQuietParams( ) { + return { + profiles, + activeProfileKey: this.profileKey, + bufferSize: SAMPLE_BUFFER_SIZE, + sampleRate: this.context.sampleRate, + } + } + + async createAudioNode( ) { + throw new NotImplementedError + } + + destroyAudioNode( node ) { + const audioNodeInterface = node[ $interface ] + audioNodeInterface && audioNodeInterface.destroy( ) + } + + start( ) { + throw new NotImplementedError + } + + stop( ) { + throw new NotImplementedError + } +} diff --git a/src/backend/index.mjs b/src/backend/index.mjs new file mode 100644 index 0000000..133d398 --- /dev/null +++ b/src/backend/index.mjs @@ -0,0 +1,10 @@ + +import ScriptProcessorBackend from './scriptprocessor.mjs' +import WorkletBackend from './worklet.mjs' + +const isWorkletSupported = ( ) => + typeof AudioWorkletNode === 'function' + +export default isWorkletSupported( ) + ? WorkletBackend + : ScriptProcessorBackend \ No newline at end of file diff --git a/src/backend/scriptprocessor.mjs b/src/backend/scriptprocessor.mjs new file mode 100644 index 0000000..9cf10a3 --- /dev/null +++ b/src/backend/scriptprocessor.mjs @@ -0,0 +1,60 @@ + +import GenericAudioBackend, { $interface } from './generic.mjs' +import quietDefinition from '../libquiet/quiet.js' +import { + INPUT_CHANNELS, + OUTPUT_CHANNELS, + SAMPLE_BUFFER_SIZE +} from './constants.mjs' + +const compileModule = ( ) => + eval( quietDefinition + '; window.Module = quiet()' ) + +export default class ScriptProcessorBackend extends GenericAudioBackend { + constructor( profile ) { + super( profile ) + if( ! window.Module ) { + compileModule( ) + } + } + + async createAudioNode( processingCode, params ) { + const node = this.context.createScriptProcessor( + SAMPLE_BUFFER_SIZE, + INPUT_CHANNELS, + OUTPUT_CHANNELS + ) + + const { destroy, init, process } = eval(` + ${ processingCode } + + ( ( ) => ( { + destroy, init, process + } ) )( ) + ` ) + + init( { + ... this.getQuietParams( ), + ... params, + } ) + + node[ $interface ] = { destroy } + node.onaudioprocess = event => { + const { inputBuffer, outputBuffer } = event + const input = inputBuffer.getChannelData( 0 ) + const output = outputBuffer.getChannelData( 0 ) + const { checksumFail, stop, value } = process( input, output ) + if( checksumFail ) { + this.emit( 'error' ) + } + if( stop ) { + setTimeout( ( ) => this.emit( 'stopped' ), 250 ) + } + if( value ) { + this.emit( 'payload', value ) + } + } + + return node + } +} \ No newline at end of file diff --git a/src/backend/worklet.mjs b/src/backend/worklet.mjs new file mode 100644 index 0000000..7797f71 --- /dev/null +++ b/src/backend/worklet.mjs @@ -0,0 +1,102 @@ + +import GenericAudioBackend, { $interface } from './generic.mjs' +import quietCode from '../libquiet/quiet.js' + +class QuietWorkletNode extends AudioWorkletNode { + constructor( context ) { + super( context, 'quiet-worklet-node' ) + } +} + +export default class WorkletBackend extends GenericAudioBackend { + constructor( profile ) { + super( profile ) + } + + async createAudioNode( processingCode, params = { }, transferable ) { + const module = ` + ${ quietCode }; + const Module = quiet( ) + + ${ processingCode }; + + class QuietWorkletProcessor extends AudioWorkletProcessor { + constructor( ) { + super( ) + this.initialized = false + this.port.onmessage = this.onMessage.bind( this ) + } + + onMessage( event ) { + const { type, value } = event.data + switch( type ) { + case 'destroy': + destroy( ) + break + case 'params': + init( value ) + this.initialized = true + break + default: + break + } + } + + process( inputs, outputs, parameters ) { + if( ! this.initialized ) { + return true + } + + const input = inputs[ 0 ][ 0 ] + const output = outputs[ 0 ][ 0 ] + + const { checksumFail, stop, value } = + process( input, output ) + + if( checksumFail ) { + this.port.postMessage( { + type: 'error' + } ) + } + if( stop ) { + this.port.postMessage( { + type: 'stopped' + } ) + } + if( value ) { + this.port.postMessage( { + type: 'payload', + value + }, [ value ] ) + } + + return !stop + } + } + + registerProcessor( 'quiet-worklet-node', QuietWorkletProcessor ) + ` + const blob = new Blob( [ module ], { type: 'text/javascript' } ) + const url = URL.createObjectURL( blob ) + + await this.context.audioWorklet.addModule( url ) + + const node = new QuietWorkletNode( this.context ) + node.port.onmessage = event => + this.emit( event.data.type, event.data.value ) + + node.port.postMessage( { + type: 'params', + value: { + ... this.getQuietParams( ), + ... params, + } + }, transferable ) + + node[ $interface ] = { + destroy: ( ) => node.port.postMessage( { type: 'destroy' } ) + } + + return node + } +} \ No newline at end of file diff --git a/src/helpers.mjs b/src/helpers.mjs new file mode 100644 index 0000000..28d0dc3 --- /dev/null +++ b/src/helpers.mjs @@ -0,0 +1,30 @@ + +const ab2str = buffer => { + const utf16Codes = new Uint16Array( buffer ) + const totalSize = utf16Codes.length + const chunkSize = 1e4 // 10000 items at a time + + let str = '' + for( let i = 0; i < totalSize; i += chunkSize ) { + const slice = utf16Codes.subarray( i, i + chunkSize ) + const utf16 = String.fromCharCode.apply( null, slice ) + str += utf16 + } + + return str +} + +const str2ab = str => { + const buf = new ArrayBuffer( str.length * 2 ) + const view = new Uint16Array( buf ) + for( let i = 0; i < view.length; i ++ ) { + view[ i ] = str.charCodeAt( i ) + } + + return buf +} + +export default { + ab2str, + str2ab, +} \ No newline at end of file diff --git a/src/index.mjs b/src/index.mjs new file mode 100644 index 0000000..73e499d --- /dev/null +++ b/src/index.mjs @@ -0,0 +1,12 @@ + +import Helpers from './helpers.mjs' +import { profileKeys as Profiles } from './profiles.mjs' +import Receiver from './receiver.mjs' +import Transmitter from './transmitter.mjs' + +export default { + Helpers, + Profiles, + Receiver, + Transmitter +} diff --git a/src/processors/receive.mjs b/src/processors/receive.mjs new file mode 100644 index 0000000..b0bb878 --- /dev/null +++ b/src/processors/receive.mjs @@ -0,0 +1,89 @@ + +let bufferLength, + checksumFails, + decoderPtr, + framePtr, + samplesPtr, + samplesView + +function init( { + activeProfileKey, + bufferSize, + profiles, + sampleRate, +} ) { + bufferLength = bufferSize + + const profilePtr = Module.ccall( + 'quiet_decoder_profile_str', 'pointer', [ 'array', 'array' ], [ + Module.intArrayFromString( JSON.stringify( profiles ) ), + Module.intArrayFromString( activeProfileKey ) + ] + ) + + decoderPtr = Module.ccall( + 'quiet_decoder_create', 'pointer', + ['pointer', 'number'], + [ profilePtr, sampleRate ] + ) + + Module.ccall( 'free', null, [ 'pointer' ], [ profilePtr ] ) + + framePtr = Module.ccall( + 'malloc', 'pointer', + [ 'number' ], + [ bufferSize ] + ) + + samplesPtr = Module.ccall( + 'malloc', 'pointer', + [ 'number' ], + [ bufferSize * 4 ] + ) + + // since pointers are byte indexes in emscripten's fake heap, we need to + // convert to double word indexes by dividing by ( 32 / 8 ) + const dwordIndex = samplesPtr / 4 + samplesView = Module.HEAPF32.subarray( dwordIndex, dwordIndex + bufferSize ) + + checksumFails = 0 +} + +function destroy( ) { + Module.ccall( 'free', null, [ 'pointer' ], [ samplesPtr ] ) + Module.ccall( 'free', null, [ 'pointer' ], [ framePtr ] ) + Module.ccall( 'quiet_decoder_destroy', null, [ 'pointer' ], [ decoderPtr ] ) +} + +function process( input, output ) { + samplesView.set( input ) + + Module.ccall( + 'quiet_decoder_consume', 'number', + [ 'pointer', 'pointer', 'number' ], + [ decoderPtr, samplesPtr, input.length ] + ) + + const currentChecksumFails = Module.ccall( + 'quiet_decoder_checksum_fails', 'number', + [ 'pointer' ], + [ decoderPtr ] + ) + if( currentChecksumFails > checksumFails ) { + checksumFails = currentChecksumFails + return { checksumFail: true } + } + + const read = Module.ccall( + 'quiet_decoder_recv', 'number', + [ 'pointer', 'pointer', 'number' ], + [ decoderPtr, framePtr, bufferLength ] + ) + + if( read !== -1 ) { + const slice = Module.HEAPU8.slice( framePtr, framePtr + read ) + return { value: slice.buffer } + } + + return { } +} diff --git a/src/processors/transmit.mjs b/src/processors/transmit.mjs new file mode 100644 index 0000000..731c0de --- /dev/null +++ b/src/processors/transmit.mjs @@ -0,0 +1,97 @@ + +let bufferLength, + encoderPtr, + samplesPtr, + samplesView, + stopped + +function init( { + activeProfileKey, + buffer, + bufferSize, + profiles, + sampleRate, +} ) { + + bufferLength = bufferSize + stopped = false + + const profilePtr = Module.ccall( + 'quiet_encoder_profile_str', 'pointer', [ 'array', 'array' ], [ + Module.intArrayFromString( JSON.stringify( profiles ) ), + Module.intArrayFromString( activeProfileKey ) + ] + ) + + encoderPtr = Module.ccall( + 'quiet_encoder_create', 'pointer', + ['pointer', 'number'], + [ profilePtr, sampleRate ] + ) + + Module.ccall( 'free', null, [ 'pointer' ], [ profilePtr ] ) + + const frameLen = Module.ccall( + 'quiet_encoder_get_frame_len', 'number', + [ 'pointer' ], + [ encoderPtr ] + ) + + if( frameLen < 1 ) { + console.log( "bad frameLen" ) + return + } + + samplesPtr = Module.ccall( + 'malloc', 'pointer', + [ 'number' ], + [ bufferSize * 4 ] + ) + + const dwordIndex = samplesPtr / 4 + samplesView = Module.HEAPF32.subarray( dwordIndex, dwordIndex + bufferSize ) + + let written = 0 + while( written < buffer.byteLength ) { + const sliceSize = Math.min( buffer.byteLength - written, frameLen ) + const slice = new Uint8Array( buffer, written, sliceSize ) + const bytes = Module.ccall( 'quiet_encoder_send', 'number', + [ 'pointer', 'array', 'number' ], + [ encoderPtr, slice, slice.length ] + ) + if( bytes < 0 ) { + throw new Error( "couldn't send via quiet_encoder_send" ) + } + + written += bytes + } +} + +function destroy( ) { + Module.ccall( 'free', null, [ 'pointer' ], [ samplesPtr ] ) + Module.ccall( 'quiet_encoder_destroy', null, [ 'pointer' ], [ encoderPtr ] ) +} + +function process( input, output ) { + // this is needed with the scriptprocessor implementation where the process + // callback is run a few more times before the node is completely stopped + if( stopped ) { + return { } + } + + const bytes = Module.ccall( + 'quiet_encoder_emit', 'number', + [ 'pointer', 'pointer', 'number' ], + [ encoderPtr, samplesPtr, output.length ] + ) + + if( bytes <= 0 ) { + stopped = true + return { stop: true } + } + + output.set( samplesView.subarray( 0, bytes ) ) + output.subarray( bytes ).fill( 0 ) + + return { } +} diff --git a/src/profiles.mjs b/src/profiles.mjs new file mode 100644 index 0000000..d40d92e --- /dev/null +++ b/src/profiles.mjs @@ -0,0 +1,283 @@ + +export const profileKeys = { + Audible: 'Audible', + Audible7kChannel0: 'Audible7kChannel0', + Audible7kChannel1: 'Audible7kChannel1', + Cable64k: 'Cable64k', + HelloWorld: 'HelloWorld', + Ultrasonic: 'Ultrasonic', + Ultrasonic3600: 'Ultrasonic3600', + UltrasonicExperimental: 'UltrasonicExperimental', + UltrasonicWhisper: 'UltrasonicWhisper', +} + +export default { + [ profileKeys.Audible ]: { + "mod_scheme": "gmsk", + "checksum_scheme": "crc32", + "inner_fec_scheme": "v27", + "outer_fec_scheme": "none", + "frame_length": 100, + "modulation": { + "center_frequency": 4200, + "gain": 0.1 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 10, + "symbol_delay": 4, + "excess_bandwidth": 0.35 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + } + }, + [ profileKeys.Audible7kChannel0 ]: { + "mod_scheme": "arb16opt", + "checksum_scheme": "crc32", + "inner_fec_scheme": "rs8", + "outer_fec_scheme": "v29", + "frame_length": 600, + "modulation": { + "center_frequency": 9200, + "gain": 0.1 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 6, + "symbol_delay": 4, + "excess_bandwidth": 0.31 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + }, + "ofdm": { + "num_subcarriers": 48, + "cyclic_prefix_length": 8, + "taper_length": 4, + "left_band": 0, + "right_band": 0 + } + }, + [ profileKeys.Audible7kChannel1 ]: { + "mod_scheme": "arb16opt", + "checksum_scheme": "crc32", + "inner_fec_scheme": "rs8", + "outer_fec_scheme": "v29", + "frame_length": 600, + "modulation": { + "center_frequency": 15500, + "gain": 0.1 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 6, + "symbol_delay": 4, + "excess_bandwidth": 0.31 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + }, + "ofdm": { + "num_subcarriers": 48, + "cyclic_prefix_length": 8, + "taper_length": 4, + "left_band": 0, + "right_band": 0 + } + }, + [ profileKeys.Cable64k ]: { + "mod_scheme": "qam1024", + "checksum_scheme": "crc32", + "inner_fec_scheme": "v27p23", + "outer_fec_scheme": "rs8", + "frame_length": 7500, + "modulation": { + "center_frequency": 10200, + "gain": 0.09 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 2, + "symbol_delay": 4, + "excess_bandwidth": 0.35 + }, + "encoder_filters": { + "dc_filter_alpha": 0.03 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + }, + "ofdm": { + "num_subcarriers": 128, + "cyclic_prefix_length": 16, + "taper_length": 8, + "left_band": 6, + "right_band": 12 + } + }, + [ profileKeys.HelloWorld ]: { + "mod_scheme": "gmsk", + "checksum_scheme": "crc32", + "inner_fec_scheme": "v27", + "outer_fec_scheme": "none", + "frame_length": 25, + "modulation": { + "center_frequency": 4400, + "gain": 0.08 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 20, + "symbol_delay": 4, + "excess_bandwidth": 0.38 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + } + }, + [ profileKeys.Ultrasonic ]: { + "mod_scheme": "gmsk", + "checksum_scheme": "crc32", + "inner_fec_scheme": "v27", + "outer_fec_scheme": "none", + "frame_length": 75, + "modulation": { + "center_frequency": 19000, + "gain": 0.1 + }, + "interpolation": { + "shape": "rrcos", + "samples_per_symbol": 14, + "symbol_delay": 4, + "excess_bandwidth": 0.35 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + } + }, + [ profileKeys.Ultrasonic3600 ]: { + "ofdm": { + "num_subcarriers": 64, + "cyclic_prefix_length": 20, + "taper_length": 8, + "left_band": 4, + "right_band": 13 + }, + "mod_scheme": "V29", + "checksum_scheme": "crc8", + "inner_fec_scheme": "v27", + "outer_fec_scheme": "none", + "frame_length": 550, + "modulation": { + "center_frequency": 18500, + "gain": 0.1 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 7, + "symbol_delay": 4, + "excess_bandwidth": 0.33 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + } + }, + [ profileKeys.UltrasonicWhisper ]: { + "mod_scheme": "gmsk", + "checksum_scheme": "crc32", + "inner_fec_scheme": "v27", + "outer_fec_scheme": "none", + "frame_length": 16, + "modulation": { + "center_frequency": 19500, + "gain": 0.1 + }, + "interpolation": { + "shape": "rrcos", + "samples_per_symbol": 30, + "symbol_delay": 4, + "excess_bandwidth": 0.35 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + } + }, + [ profileKeys.UltrasonicExperimental ]: { + "mod_scheme": "bpsk", + "checksum_scheme": "crc32", + "inner_fec_scheme": "rs8", + "outer_fec_scheme": "v29", + "frame_length": 100, + "modulation": { + "center_frequency": 19000, + "gain": 0.2 + }, + "interpolation": { + "shape": "kaiser", + "samples_per_symbol": 10, + "symbol_delay": 4, + "excess_bandwidth": 0.31 + }, + "encoder_filters": { + "dc_filter_alpha": 0.01 + }, + "resampler": { + "delay": 13, + "bandwidth": 0.45, + "attenuation": 60, + "filter_bank_size": 64 + }, + "header": { + "checksum_scheme": "crc32", + "inner_fec_scheme": "secded7264", + "outer_fec_scheme": "v29", + "mod_scheme": "bpsk" + } + } +} \ No newline at end of file diff --git a/src/receiver.mjs b/src/receiver.mjs new file mode 100644 index 0000000..9515d29 --- /dev/null +++ b/src/receiver.mjs @@ -0,0 +1,57 @@ + +import AudioBackend from './backend/index.mjs' +import receiveProcessor from './processors/receive.mjs' + +const getUserAudio = async ( ) => + navigator.mediaDevices.getUserMedia( { + audio: { + echoCancellation: false + } + } ) + +export class Receiver { + constructor( profileKey ) { + console.log( 'receiver initialized with profile', profileKey ) + this.audioNode = null + this.backend = new AudioBackend( profileKey ) + } + + async start( ) { + this.audioNode = await this.backend.createAudioNode( receiveProcessor ) + return this.resume( ) + } + + on( event, fn ) { + return this.backend.on( event, fn ) + } + + off( event, fn ) { + return this.backend.off( event, fn ) + } + + pause( ) { + this.audioNode.disconnect( ) + this.audioStream.getAudioTracks( ) + .map( track => track.stop( ) ) + } + + async resume( ) { + const context = this.backend.getContext( ) + + this.audioStream = await getUserAudio( ) + this.audioInput = context.createMediaStreamSource( this.audioStream ) + this.audioInput + .connect( this.audioNode ) + .connect( context.destination ) + + context.resume( ) + } + + stop( ) { + this.pause( ) + this.backend.destroyAudioNode( this.audioNode ) + this.audioNode = this.audioStream = this.audioInput = null + } +} + +export default Receiver \ No newline at end of file diff --git a/src/transmitter.mjs b/src/transmitter.mjs new file mode 100644 index 0000000..3f8c302 --- /dev/null +++ b/src/transmitter.mjs @@ -0,0 +1,25 @@ + +import AudioBackend from './backend/index.mjs' +import transmitProcessor from './processors/transmit.mjs' + +export default class Transmitter { + constructor( profileKey ) { + this.backend = new AudioBackend( profileKey ) + } + + async waitForStopped( ) { + return new Promise( y => this.backend.once( 'stopped', y ) ) + } + + async send( buffer ) { + const context = this.backend.getContext( ) + this.audioNode = await this.backend.createAudioNode( + transmitProcessor, { buffer }, [ buffer ] + ) + + this.audioNode.connect( context.destination ) + await this.waitForStopped( ) + this.audioNode.disconnect( ) + this.backend.destroyAudioNode( this.audioNode ) + } +}